Přeskočit přímo na text


Změna banneru v závislosti na taxonomy

Kategorie: Úpravy témat vzhledu
Týká se verze: Drupal 7.x

Mám problém se změnou banneru (css) stránky v page.tpl.php.

Potřeboval bych ho měnit na základě toho, v jaké sekci jsem. V node.tpl.php to zjistím jednoduše z proměnné $field_prislusnost_stranky (mnou definované pole), tam problém není. Jenže já potřebuju mít informaci o příslušnosti stránky už při vykreslování page.tpl.php, abych na základě toho mohl nastavit banner. Tam mi ta proměnná nefunguje.

Je nějaký jednoduchý způsob, jak to zjistit? Jak se dostat k taxonomy termínu ještě před vykreslením stránky?

Zatím mě napadly 2 dost blbé způsoby:

    • udělat si pro různé příslušnosti seznamy nodů
    • funkcí arg() zjisti číslo nodu a podle toho použít banner
  1. banner (css) měnit skriptem až z node.tpl.php
 

Na to sa pouziva funkcia

Na to sa pouziva funkcia v template.php

nieco ako:

<?php
function mojatema_preproccess_page() {
}
?>

Tu je obsiahlejsi priklad http://robmalon.com/…suggestions/, ty potrebujes vo $vars['node'] zistit taxonomiu a nastavit vblastnu premennu $vars['banner_class'] = $term->name .'-banner';.

Nevim, jestli je to optimální

Nevim, jestli je to optimální řešení ale já bych si vytvořil region kam bych pomocí bloku zobrazoval banner. Pro každej banner jinej blok a každýmu z těch bloků nastavit zobrazování podle cesty.

To je zbytocna konfiguracia

To je zbytocna konfiguracia blokov navyse – jemu ide o to aby tam bol na stranke class podla ktoreho nastavi pozadie. Ked nad tym rozmyslam tak premenna $node by mala byt v D7 dostupna aj v page.tpl.php → http://api.drupal.org/…ge.tpl.php/7. Tak som sa docital ze je, cize staci napisat niekde do stranky class="<?php print $node->field_prislusnost_stranky[0]['value'] ?>".

Ja pouzivam blok, ale aj cez

Ja pouzivam blok, ale aj cez template temy sa to da. /**
* _block_info
*/ function topblok_block_info() {
$blocks[0] = array(
‚info‘ ⇒ t(‚Top block‘),
‚cache‘ ⇒ DRUPAL_CACHE_GLOBAL
);

return $blocks; }

/**
* _block_view
*/ function topblok_block_view($delta) {
$block = array();
switch ($delta) {
case 0:
$block[‚subject‘] = t(‚Top block‘);
$block[‚content‘] = topblok_blok();
break;
}

return $block; }

function topblok_blok() {
$path = ‚public://images/default_baner.jpg‘;
if ($node = menu_get_object()) {
$baner = field_get_items(‚node‘, $node, ‚field_baner‘);
if ($baner) {
$path = $baner[0][‚uri‘];
}
}

return theme(‚image_style‘, array(‚style_name‘ ⇒ ‚topblok‘, ‚path‘ ⇒ $path)); } 

Díky

Díky za rady :)

Přes mojatema_preproccess_page() jsem viděl pár řešení se zapnutými nice url, což ale nemám. Asi by to šlo i bez nich, ale narazil jsem na problém. Nevím, jak dostat proměnnou z fce preproccess_page (z template.php) do šablony. Když si třeba vytvořím $variables[‚moje_promenna‘], tak se k obsahu proměnné v šabloně nedostanu ani přes $variables[‚moje_promenna‘], ani přes $moje_promenna. Hlavičku fce jsem měl: function nazevtematu_preprocess_page(&$variables)

Řešení s blokem mi nevyhovuje, nastavuju třídu u několika prvků na stránce.

Takže zatím to řeším přes $node v page.tpl.php.

  1. Přes $node->type zjišťuju, jestli se jedná o article nebo page.
  2. Na základě toho čtu potom číslo taxonomy termu.
    Z article přes $node->field_prislusnost_novinky[‚und‘][0][‚tid‘],
    z page přes $node->field_prislusnost_stranky[‚und‘][0][‚tid‘]

Číslo taxonomy termínu si ještě v šabloně „ručně“ převádím na název, protože nevím, jak se dostat k textu, který se pod termínem skrývá. Naštěstí to není věc, co by se měnila každý den, ale moc se mi to nelíbí.

Ak vytvoris preprocess

Ak vytvoris preprocess funkciu je nutne zmazat drupal cache aby sa zaregistrovala. Az potom je premenna $moje_promenna dostupna priamo v stranke. Ja to testujem (ci uz Drupal pozna moju preproccess funkciu) tak ze dam do nej prikaz die('som tu') a hned viem ci sa ten prikaz zavola alebo nie.

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <p> <br> <b> <i> <h2> <img> <pre> <sup> <sub> <pre class="php"> <span class="php-keyword1"> <span class="php-var"> <span class="php-num"> <img class="screenshot"> <p class="beginner"> <a class="greybox"> <h3> <h4>

Více informací o možnostech formátování

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 2 uživatelé a 0 hostů.

Online uživatelé