modul aktiválásakor lefutó parancsok

kkwx képe

hellósztok

még csak most álltam neki a modulfejlesztésnek, amiben nagy segítségemre volt a http://openproject.hu/blog/york/drupal-modul-keszitese-egyszeru oldal, ami után a legalapabb dolgokon túl vagyok, csak egy olyan problémám lenne, hogy milyen módon lehetne azt megoldani, hogy a modul bekapcsolásakor létrehozza az adatbázisba a szükséges, majd használt táblákat, és hogy modul kikapcsolásakor ezeket törölje?

Előre is kösz minden segítséget.

pp képe

Nézz bele mondjuk a poll modul könyvtárában(modules/poll) található poll.install fájlba.

A lényeg, hogy kell egy drupal_install_schema('MODULNEVE') a hook_install() függvényedbe és egy drupal_uninstall_schema('MODULNEVE') a hook_uninstall() függvényedbe, valamint meg kell valósítanod a hook_schema() hookot is. E három hook megvalósítást a MODULNEVE.install fájlba tedd bele.

Lásd még: http://api.drupal.org
pp

0
0
kkwx képe

na, az ilyen válaszokat szeretem, egyszerű, rövid, lényegre törő és mégis hasznos :)... emellett a poll modul installját tanulmányozva újabb kérdések merültek fel bennem, pl, hogy a modul programozásban nincs SQL? (bocs ha hülye kérdés, de még nagyon amatőr vagyok :) ), és nem teljesen értem azt a szintaktikát... valaki el tudná magyarázni esetleg, hogy itt mi-micsoda, és hogy hozok létre táblát szöveg, szám, dátum mezőkkel?

0
0
hosszu.kalman képe

A séma létrehozáskor már nincs benne SQL, mert a Drupal az adatbázistól függően fogja legenerálni az SQL-t.
A hook_schema-tól itt olvashatsz:
http://api.drupal.org/api/function/hook_schema/6

Ezek a típusok érhetőek el:
http://drupal.org/node/159605

És ez a referencia:
http://drupal.org/node/146939

Kb ilyesmi egy schema:

<?php
function modulneve_schema() {
  $schema = array();
 
  $schema['tabla_neve'] = array(
    'description' => 'Leiras a tablarol',
    'fields' => array(
      'ez_egy_auto_incerement_mezo_neve' => array(
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE),
      'ez_egy_int' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0),
      'ez_egy_varchar' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
        'default' => ''),
      'ez_egy_text' => array(
        'description' => 'The title of this node, always treated as non-markup plain text.',
        'type' => 'text',
        'length' => 255,
        'not null' => TRUE,
        'default' => ''),
      'ez_egy_datum' => array(
        'type' => 'datetime',
        'not null' => TRUE,
        'default' => ''),
      ),
    // Indexek, stb
    'indexes' => array(
      'node_changed'        => array('changed'),
      'node_created'        => array('created'),
      ),
    'unique keys' => array(
      'nid_vid' => array('nid', 'vid'),
      'vid'     => array('vid')
      ),
    'primary key' => array('nid'),
  );
  return $schema;
}
?>
0
0
kkwx képe

ezer köszönet, tökéletes válasz :), ez alapján meg tudom csinálni :), és ha jól értelmezem akkor több táblát egyszerűen úgy csinálok, hogy írok még egy "$schema['tabla_neve']..." elemet? és a törlés, akkor :

function ultimate_reserve_install() {
// Create tables.
drupal_install_schema('ultimate_reserve');
}

és így gyakorlatilag azt törli amit itt létrehozok, mindent, és nem is kell megadni semmi extra adatot?

0
0
hosszu.kalman képe

Igen, úgy hozol létre új táblát hogy egy új kulcsot hozol létre a változóban.

hook_install-ba:  drupal_install_schema('modulneve')
hook_uninstall-ba:  drupal_uninstall_schema('modulneve')

Az egyik létrehozza a táblákat a másik meg kitörli.

0
0
kkwx képe

ja, és a primary_key-t először meg kell valósítani egy változóként a fields-ben és utána elsődleges kulccsá alakítani, vagy autómatán létrehozza? és ha automatán hozza létre akkor milyen típusként?

0
0
hosszu.kalman képe

Igen, először létrehozod a fields-ben - definiálod a tulajdonságait -, majd utána megadod hogy melyik, vagy mely field-ek az elsődleges kulcsok.

0
0
kkwx képe

kösz, mindkét választ, így már meg tudom csinálni, remélem :), tudom, hogy ez nem ide illő kérdés, de milyen programmal érdemes Drupal modult írni? mert a wordpad, szerintem enyhén szólva nem a legjobb megoldás :)

0
0
hosszu.kalman képe

Én pl. Netbeans PHP-t használok, de valaki az Eclipse-t szereti, valaki meg a Komodo-t valaki meg megint mást. Én használtam mind a hármat és ez jött be legjobban.

0
0
nevergone képe

Én pl. Komodo-t használok, de akár egy Notepad++ is elég lehet.

0
0
szantog képe

http://drupal.hu/forum/drupal-fejleszt%C5%91i-k%C3%B6rnyezet
és mindjárt jön zserno a vimmel. :)

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

nevergone képe

Igazad van, ez amúgy is offtopic itt. :)

0
0
kkwx képe

tudom, hogy offtopic, de így volt a legegyszerűbb :), kösz minden választ :), én HTML Builder-el próbálkoztam ami nem rossz, mert színez, de nem kapcsolja össze a zárójeleket, pedig az nagyon hasznos fejlesztésnél... no abbahagyom az offolást, és szerintem az alaptémát is kitárgyaltuk :), szal még egyszer kösz mindent, és majd még visszatérek egy újabb témával :)

0
0
kkwx képe

csak nem tudok elszakadni a témától :), megvalósítottam ezzel a módszerrel 3 táblát, de csk az egyiket csinálta meg, valószínüleg azért, mert dátum típust próbáltam létrehozni...

'datum' => array(
'type' => 'date',
'not null' => TRUE,
'default' => ''),

akkor ezek szerint, csak "datetime" típust lehet csinálni? és ha igen, akkor ebben lehet tárolni, csak dátumot a későbbiekben könnyedén? úgy hogy csak a dátum részét kezeljem?

emellett még az érdekelne, hogy "utf8_general_ci" típusúnak mentette el a táblát (bár a többi tábla is ilyen), és hol lehet beállítani, hogy magyarnak mentse el (utf8_hungarian_ci)? vagy ezt alapból a modul létrehozásánál kell beállítani, mert igazából nemtudom, hogy ez a későbbiekben gond lesz-e, de a Drupalban a moduloknál már a modul leírásánál sem jeleníti meg az ékezeteket, és ezért gondoltam, hogy ezt jobb minél előbb lekezelni (és azt se tudom mondjuk, hogy a verziószámot hol lehet megadni, hogy ott kiírja, de ez már tényleg eléggé off téma :) )

előre is kösz, a válaszokat, és remélem ez lesz az utolsó kérdésem a témában :)

0
0
pp képe

utf-8 kódolással készítsd a fájlokat

0
0
kkwx képe

azt hol is kell beállítani? melyik fájlban (esetleg mindben), és hogyan? :), bocs, még nagyon amatőr vagyok :)

0
0
nevergone képe

A programban, amit használsz. BOM se legyen a fájl elején.
De ez itt szintén offtopic, megfontolandó a téma lezárása, mivel az eredeti kérdésre több helyes válasz is született már.

0
0
zserno képe

és mindjárt jön zserno a vimmel. :)

Hat ezen jot mulattam, koszi! :)
(Psszt! Amugy tenyleg, Vim a legjobb: http://www.youtube.com/watch?v=pCiVCiku3cM)

0
0