hook_theme() használata Drupal 6.x

aboros képe

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?

aboros képe

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?

    [makifajta] => Array
        (
            [template] => sites/all/modules/makifajta/makifajta
            [arguments] => Array
                (
                    [node] => 
                    [teaser] => 
                    [page] => 
                )
 
            [type] => module
            [theme path] => sites/all/modules/makifajta
            [theme paths] => Array
                (
                    [0] => sites/all/modules/makifajta
                )
 
            [preprocess functions] => Array
                (
                    [0] => template_preprocess
                )
 
            [function] => devel_themer_catch_function
        )

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... :(

0
0

-
clear: both;

aries képe

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).

0
0
aboros képe

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:

[makifajta] => Array
        (
            [template] => sites/all/modules/makifajta/makifajta-ctype
            [arguments] => Array
                (
                    [node] => 
                    [teaser] => 
                    [page] => 
                )
 
            [type] => module
            [theme path] => sites/all/modules/makifajta
            [theme paths] => Array
                (
                    [0] => sites/all/modules/makifajta
                )
 
            [preprocess functions] => Array
                (
                    [0] => template_preprocess
                )
 
        )

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?

0
0

-
clear: both;

aboros képe

azt írod ez nehogy összeakadjon a node modullal, de nincs ilyen hurkom, hogy makifajta_node.. kéne?

0
0

-
clear: both;

aries képe

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.

0
0