A kérdésem teljesen elméleti jellegű.
Mostanában gyakran csinálom azt, hogy az arg() értékeit figyelve, ha node/nid van, betöltöm node_load() -al a node -ot. Leginkább ilyen-olyan sminkelési céllal csinálom ezt. Mondok egy példát:
Szeretném, ha a body osztályként megkapná az adott node típusát, de a page.tpl.php -ban a $node nem áll rendelkezésre.
Ezt úgy csinálom, hogy a template.php -ban ilyesmi van:
function playground_body_class() { if (arg(0) == 'node' && is_numeric(arg(1)) { $node = node_load(arg(1)); $class = 'ntype-'.$node->type; } if (isset($class)) { print ' class="'. $class .'"'; } }
aztán a page.tpl.php -ban pedig:
<body<?php print playground_body_class(); ?>> ..
A kérdésem az, hogy mennyire "drága" ez nekem? Nem számít szinte semmit vagy inkább ne csináljak ilyet? (ugyanezt kérdezhettem volna taxonomy_node_get_terms_by_vocabulary() -val is, ha mondjuk egy node termjeit szeretném a body -hoz osztályként rendelni.)
Drupal verzió:
Fórum:
így olcsó
Ha így csinálod akkor olcsó. Neked megszámítom egy sörért. :D
A node_lode ekkor már egyszer lefutott, és minden újabb hívásnál az akkor előállított node ojjektumot adja vissza. (de ezt ugye minden óvodás láthatja a forrásból)
Minden más esetben a válasz az, hogy a franc se tudja, mert attól függ hány és milyen modul van bekapcsolva. Tehát, ha nem a node/x amit lehívtak.
A taxonomy_node_get_terms_by_vocabulary pedig minden egyes node-nál egy újabb sql lekérdezést fog jelenteni. (persze ehhez már nagycsoportosnak kell lenned, mivel először a taxonomy_nodapi-t kell megnézni. ;))
A kérdés, hogy miért nem jó neked a $node->taxonomy ?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
jó az, csak nem vettem észre
ugyanis, a modules/node/node.tpl.php -ban nem szerepel a $taxonomy, nincs is dokumentálva, hogy ott lenne ilyen tömb. a garland node.tpl.php -ja már használja (if($taxonomy)) de a garland template.php -jában sincs semmi különös, ami belenyomná a $node -ba a $taxonomy -t.. szóval nem is értem, hogy kerül oda, dokumentáció szerint csak a $terms van, ami viszont már html.
fura, lehet, hogy dokumentáció-bug? :)
mindenesetre simán jó a $taxonomy, köszönöm. (bár nincs benne, hogy melyik term melyik szótárból való és a termek idjét is csak sztringvadosással lehet kinyerni, de ezek most nem is érdekelnek, úgyhogy mindegy is)
-
clear: both;
theme.inc
D5 alatt a phptemplate.engine-ben volt, most átmozgatták a theme.inc-be:
hm
értem. köszi!
csak hogyan kéne rájönnie tibinek, hogy ez benne van a $node -ban, ha az amúgy igen részletes dokumentációban nem említik? nem feltételeztem, hogy 'kifelejtették' .. tudom, használjon devel modult. meg ugye a garland forrásában is van $taxonomy..
de ettől még igazán benne lehetne az eredeti node.tpl.php -ban az Available variables között, hogy $taxonomy: keyed array of taxonomy terms associated with the node (see theme.inc) vagy ilyesmi.
-
clear: both;
többezer modul
Az, hogy benne van az csak akkor igaz, ha a taxonomy modul telepítve van és be van kapcsolva. Ha felteszel egy taxonomy killer modult ami a nodapi load op-ban kitörli akkor meg nem lesz benne. És akkor ezt mind a hétezer modulra le kéne írni. Szerinted??
És akkor nem beszéltünk arról, hogy a cck meg szintén beletesz mindenfélét a node-ba de azt még dokumentálni se lehet, mert azt a júzer kattintgatja össze.
Miért nem használsz devel modult, hogy tudd mi van a $node-ban?
(ha azt fontolgatod, hogy Te akkor is nekiállsz és ledokumentálod, szólnék: valószínűleg mire végzel kijön a hetes és még vagy száz modul és kezdheted előröl sok sikert!)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu