it-swarm.it

Variabile per verificare se la pagina è di qualche altro tipo di contenuto

Le variabili $page e $teaser sono molto utili, ma c'è un modo per verificare se sono in un tipo di contenuto diverso? Ad esempio, se ho creato un tipo di contenuto denominato Prodotti, cosa posso digitare nel mio file modello page.tpl.php che visualizzerà HTML solo se la pagina visualizzata è di tipo Prodotti?

6
enchance

Inseriscilo nel template.php del tuo tema, sostituendo "THEMENAME" con il nome del tuo tema:

function THEMENAME_preprocess_page(&$variables, $hook) {
  $variables['some_html'] = '';
  if (isset($variables['node']) && $variables['node']->type == 'product') {
    $variables['some_html'] = '<p>Hello world!</p>';
  }
}

E usa questo nel tuo page.tpl.php:

<?php print $some_html; ?>

In alternativa, se vuoi mantenere la stringa HTML nel tuo file modello, lo farei in template.php:

function THEMENAME_preprocess_page(&$variables, $hook) {
  $variables['print_extra_header'] = false;
  if (isset($variables['node']) && $variables['node']->type == 'product') {
    $variables['print_extra_header'] = true;
  }
}

E usa questo in page.tpl.php:

<?php if ($print_extra_header) : ?> <h1>THIS GETS PRINTED</h1> <?php endif; ?>

Assicurati di svuotare la cache dopo aver creato la funzione THEMENAME_preprocess_page, altrimenti Drupal non saprà che è lì e non funzionerà.

12
marcvangend