Hali
A tegnap esti szívásomat közreadom, hátha valaki megtudja magának spórolni azt a 2-3 órát (közben olvastam mást is).
Szerettem volna egy olyan modult készíteni ami nem csak 1 hanem több node típust is definiál.
A node_example.module -ból indultam ki. Nagy szerűen megmutatja azt hogy hogyan lehet egyet definiálni.
Ha csak 1 van akkor nincsen szükség a mymodule_node_type() kampóra, csupán a mymodule_node_name() visszatérési értéke legyen a típus lokalizált neve.
return t('a tartalom típus neve');
A node típus adatbázisban eltárol értéke a modul neve lesz.
tehát a $node->type értéke 'mymodule' lesz.
A node_example csak annyit ír, ha több típust is akarsz akkor szükség van a mymodule_node_type()
függvényre is, aminek egy tömböt kell visszaadnia, a típusok felsorolásával.
A trükk az egészben az, hogy sehol (nem találtam) nem írnak arról hogy kötött formája van a típus megnevezésnek.
modulneve kötőjel megnevezé
mymodule-t1
a kötőjel utáni rész szabadon választott, viszont az egész nem lehet hosszabb mint 16 karakter, ugyanis ennyi az adatbázis mező mérete.
Több node típus esetén a mymodule_node_name() is változik.
function mymodule_node_name($node) { $case=''; switch(GetType($node)){ Case 'string':$case = $node; Break; Case 'array' :$case = $node['type'];Break; Case 'object':$case = $node->type; Break; }//switch switch ($case) { case 'mymodule-t1':return T('My node type 1');break; case 'mymodule-t2':return T('My node type 2');break; DEFAULT: //echo $node."<br />\n"; }//switch } function mymodule_node_type(){ return array('mymodule-t1', 'mymodule-t2'); }
Azért kell a modul neve előtagnak hogy tudja a rendszr, hogy azt a típust melyik *.module kezeli.
Kérdés
Át néztem forráskódokat és azt vettem észre, hogy még a nagy modulok is csak 1 típust használnak (ezért sem találtam példát a több típusra). Furcsa hogy az én kis modulocskám rögtön kettőt kar csinálni. Nem jól terveztem meg valamit?
Miért elég 1 és mikor érdemes/kell többet használni?
Asszem az utobbi időben elég nagyot lendítettem a drupal.hu fórumának topic nyitási átlagán. :D
nem olyan rossz dolog az a codehighlight
miért nincsen itt a dupal.hu -n telepítve a "Code filter" modul ?
van
Van, csak abban a beviteli formában nincs bekapcsolva, amit te tudsz használni.
több node típus
A Weblaboron például story szerű funkcionalitást szerettünk volna elérni sok néven (cikk, hír, szójegyzék bejegyzés, stb). A több node típus használatának előnye, hogy külön jogosultságot, paraméter alapbeállításokat, stb. adhatsz meg hozzájuk. Nekünk is alapvetően ezért kellett, meg a jó taxonómia korlátozás és a könnyebb automatikus webcím álnév kialakítás miatt.