it-swarm-eu.dev

Jak otestuji typ uzlu, abych mohl vytisknout proměnnou z template.php?

V Drupal 7, můžete použít následující v template.php k testování přítomnosti typu uzlu:

function MYTHEME_preprocess_node(&$variables) {
if ($variables['type'] == 'NODETYPE') { 
***CUSTOM CODE****
}

V Drupal 7) můžete v šabloně použít následující k vytvoření proměnné, kterou lze vytisknout v souboru page.tpl.php:

function MYTHEME_preprocess_page(&$variables) {
      $variables['greeting'] = 'Custom Greeting';   
} 

Jak ale zkombinujete tyto dva, abyste vytvořili proměnnou uvnitř template.php (kterou lze vytisknout na stránce.tpl.php), která se mění podle typu uzlu?

Myslel bych si, že by to fungovalo:

    function MYTHEME_preprocess_page(&$variables) {
              if ($variables['type'] == 'NODETYPE') { 
  $variables['greeting'] = 'Custom Greeting';
    }
    } 

Ale nefunguje to. Proč je to? (Použití stejného kódu na MYTHEME_preprocess_node také nefunguje).

Díky za pomoc!

4
big_smile

Každá šablona má jinou sadu proměnných. Proměnné dostupné v daném tématu jsou obecně dokumentovány v sekci komentářů v horní části souboru. Tuto dokumentaci si můžete prohlédnout na http://api.drupal.org .

Typ uzlu není přímo k dispozici jako proměnná v page.tpl.php . Máte však $node objekt, který má vlastnost type:

function MYTHEME_preprocess_page(&$variables) {
  if (!empty($variables['node']) && $variables['node']->type == 'NODETYPE') {
    $variables['greeting'] = 'Custom Greeting';
  }
} 
6
Pierre Buyle