sziasztok,
van egy aprócska node típusú modulom, amit szeretnék rávenni, hogy a modulneve.tpl.php file -t használja sminkként ezen típusok megjelenítésekor a drupal, úgy, hogy ez a file a modul könyvtárában van, felülírható sminkenként, ha pedig az aktuális smink nem írja felül azt, akkor az eredeti legyen használatos. (hasonlóan, ahogy a node modul esetében a node.tpl.php)
addig jutottam, hogy a hook_theme() hurokkal tudatnom kell a drupallal, hogy létezik ez a template és hogy ezt kell használni.
ezt csináltam, de ez nem működik.
function makifajta_theme(){ return array( 'makifajta' => array( 'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE), 'template' => 'makifajta', ) ); }
ezután egyszerűen lemásoltam a node.tpl.php -t a makifajta modul könyvtárába és átneveztem makifajta.tpl.php -ra, majd elvégeztem a módosításokat. töröltem a theme registry -t is, de sajnos semmi változás nem történik.
nagyon örülnék egy pársoros útmutatásnak, hogy mit rontok el, sajnos az api doksi nem túl bőszavú a hook_theme -t illetően, illetve igen, de kiskacsa modulfejlesztőként még azért elég ködös sok helyen... :(
mit rontok el?
pedig bekerül a theme registry -be
devel modullal megnéztem a theme registry -t és belekerül ez, nem tudom mit jelenthet pontosan, de ezek szerint működnie kéne nem?
kihagyok valait? kéne használni ebben az esetben (implementing as a template) a template_preprocess -t is? vagy mit hagyok ki? hiába piszkálom a makifajta.tpl.php -t, nem történik semmi... :(
-
clear: both;
Jónak tűnik, amit csinálsz,
Jónak tűnik, amit csinálsz, próbálkozz meg azzal, hogy a template-nek nem az lesz a neve, mint a modulnak, hanem makifajta_ctype mondjuk (nehogy összeakadjon a makifajta_node a node modullal).
sajnos nem segít
köszi, kipróbáltam, de sajnos nem segít ez sem. továbbra sem történik semmi, pedig a theme registry -be most is belekerül ez:
ennek ellenére hiába írok én bármit is a makifajta-ctype.tpl.php -ba, nem reagál a szisztéma. theme developer pedig továbbra is azt mondja, ha rákérdezek egy ilyen node -ra, hogy az előállításához a node.tpl.php -t használta és candidate template a node-makifajta.tpl.php
kezdek begolyózni.
ha jól értem a dolgokat, semmi mást nem kell tennem, csak a modulban megvalósítani a hook_theme() -et, aminek egy tömböt kell visszaadnia a modul smink-implementációival.. ebben a tömbben tömbök kell legyenek, ha ezek közül valamelyikben adott a 'template' => 'example', akkor ez egy template implementálás és a drupal a modul könyvtárában fogja keresni 'example.tpl.php' -t és azt fogja használni a megjelenítéskor.. valamit nagyon elrontok, ennek működnie kellene.
és még az is fura, hogy ha mondjuk ezt a makifajta-ctype.tpl.php -t átmásolom valamelyik smink könyvtárába, mondjuk garland, akkor az már nem kerül bele a theme registrybe, a [theme paths] közé, pedig ha jól értem be kéne neki. valamit kihagyok. nem kell semmi más hurkot megvalósítani, hogy működjön ez?
-
clear: both;
makifajta_node?
azt írod ez nehogy összeakadjon a node modullal, de nincs ilyen hurkom, hogy makifajta_node.. kéne?
-
clear: both;
Ugye minden tartalomtípusnak
Ugye minden tartalomtípusnak lehet saját tpl-je, mint pl. a blog.tpl.php. Ezért írom, hogy a hibát kizárva próbálj meg olyan tpl-t megadni, ami lehetőség szerint nem akadhat össze mással.