egyéni page.tpl.php saját module gyártotta oldalakhoz

aranyozottpatkoszeg képe

Van egy module-om, ami kiszolgálja a /sajatmodule/%/%/% oldalakat. Ezekhez az oldalakhoz, de csak ezekhez, szeretnék egy egészen saját page.tpl.php-t használni, amit a module-omból hívnék meg.

Hogyan lehet?

Aboros gondolata alapján megpróbáltam ezt:

function sajatmodule_theme_registry_alter(&$theme_registry) {
  if(épp_azokon_az_oldalakon_vagyok) {  
    $theme_registry['page']['path'] = 'sites/all/modules/sajatmodule';
  }
}

(A sites/all/modules/sajatmodule könyvtárba hoztam létre a saját page.tpl.php-t.)

Ezzel két problémám van még:
1) A hook_theme_registry_alter csak cache ürítéskor fut le. Szóval az adott oldalra/ról lépegetés esetén mindig üríteni kell.
2) Az épp_azokon_az_oldalakon_vagyok feltételt nem sikerül szépen kitalálnom. (Csak URL-ből megy a $_SERVER["REQUEST_URI"] segítségével.)

Drupal verzió: 
vajdasági képe

A page.tpl.php szerintem ne oda tedd hanem a sites/all/themes/sajattema mappaba vagy valami almappajaba (alsmink). De lehet tevedek,majd okosabbak megmongyak a tuti ...

Olyan valami megoldas nincsen hogy sajatmodule.page.tpl.php nincsen? Ezt meg en kerdezem... Nem inkabb olyan iranyban kellene elindulni?

0
0
szantog képe

A feltétel nem a theme_registry_alterbe kell. Ez egy regisztrációs tár, aminek annyit mondasz, hogy figyi, itt meg itt, van ilyen meg ilyen tpl-em.

A megfelelő preprocessben kell meghatározni a feltételt, amikor a te tpl-ed kell.
Ez hatosra van, de zömében még aktuális: http://szantogabor.com/hirek/sajat-modulban-sajat-template-hozzaadasa

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aranyozottpatkoszeg képe

Azt sikerült elérnem, hogy a modulom könyvtárában is nézze a template fileokat. ITT egy még precízebb kód. De csak a szokásos "normál" tpl-ekre talál rá.

Még nem tudok adni neki, egy teljesen egyedi valamisajatnevu.tpl.php-t. :(

function MODULOM_preprocess_page(&$vars) {
  $vars['template_file'] = 'valamisajatnevu' ;
}

Akár a smink normál könyvtárába, akár a saját modulom könyvtárába rakom a valamisajatnevu.tpl.php-t.

A "Themer" mintha azt mondaná, hogy a "canidate template files" között ott van a 'valamisajatnevu'

0
0