Több node tipus definiálása egy modulban.

Sweetchuck képe

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

Sweetchuck képe

miért nincsen itt a dupal.hu -n telepítve a "Code filter" modul ?

0
0
Hojtsy Gábor képe

Van, csak abban a beviteli formában nincs bekapcsolva, amit te tudsz használni.

0
0
Hojtsy Gábor képe

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.

0
0