Jauns themeable elements ar hook_theme() Drupal 7 [Atrisināts]

Danis Fri, 03/02/2012 - 14:16

Savā modulī izmantoju <a href="http://api.drupal.org/api/drupal/modules!system!system.api.php/function…()</a> un reģistrēju, piem., "infobox" elementu. Izveidoju atbilstošu <code>theme_infobox()</code>, bet tā nekad netiek izsaukta. Izsaukta tiek vienīgi funkcija, kas sākas ar moduļa nosaukumu, t.i., <code>modulis_infobox()</code>. Kāpēc tā? Vai tad noklusētai tēmas funkcijai nevajadzētu vienmēr būt <code>theme_...()</code> nevis <code>modulis_...()</code> ? Core ir pilns ar <a href="http://api.drupal.org/api/drupal/modules!system!theme.api.php/group/the…...() funkcijām</a>.

Pati par sevi jau tā f-ja neizpildās. Kaut kur tā ir jāizsauc - $output = theme('infobox', param1, param2, param..n);
Jā, funkcija tiek izsautka, tikai ne tā, kuru it kā vajadzēja izsaukt. Tiek izsaukta funkcija, kas sākas ar moduļa nosaukumu. Sanāk, ka pats modulis pārraksta theme funkciju elementam, kuru pats ir izveidojis. Iespējamais cēlonis varētu būt, ka vietnes tēmai ir tieši tāds pats nosaukums kā modulim un tā rezultātā theme engine apjūk. Nez vai tā ir labi darīt - nosaukt moduli tēmas vārdā?