2010-04-16 9 views

risposta

1

La pagina di tassonomia non è magica in alcuno che richiede qualcosa di speciale per trattarlo. C'è un file modello, una funzione di pre-elaborazione e alcune funzioni tematiche, proprio come qualsiasi altra pagina.

Se si desidera controllare l'output della pagina di tassonomia predefinita che è un po 'grezza, è possibile utilizzare le viste per sovrascrivere la pagina predefinita. Potresti quindi utilizzare le visualizzazioni per mostrare solo i teaser del nodo, eseguire un ordinamento personalizzato, utilizzare un cercapersone, ecc.

Se vuoi fare qualcosa di più specifico, devi modificare la tua domanda per dirci cosa vuoi fare.

12

In Drupal 6, è possibile utilizzare i file node-taxonomy.tpl.php e page-taxonomy-term.tpl.php nel tema per le pagine di tassonomia modello considerando che il secondo è il wrapper per il primo. Behave node-taxonomy.tpl.php come node.tpl.php e page-taxonomy-term.tpl.php come page.tpl.php. per esempio:

pagina-tassonomia-term.tpl.php

<?php require 'header.tpl.php'; ?> 
    <body class="<?php echo $body_classes; ?>"> 
     <div id="page"> 
      <?php require 'page-navigation.tpl.php'; ?> 
      <div id="main"> 
     <h2>Taxonomy term page</h2> 
     <div class="taxonomy-content"> 
      <?php if ($tabs): echo '<div id="tabs-wrapper" class="clear-block">'; endif; ?> 
      <?php if ($title && !$node): echo '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?> 
      <?php if ($tabs): echo '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?> 
      <?php if ($tabs2): echo '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?> 
      <?php if ($show_messages && $messages){ echo $messages; } ?> 
      <?php echo $help; ?> 
      <?php echo $content; // contains the output of node-taxonomy.php, that's why I call this wrapper template file. ?> 
     </div> <!-- #taxonomy-content -->     
      </div> <!-- #main -->   
     </div> <!-- #page --> 
     <?php echo $closure; ?> 
    </body> 
<?php require 'page-footer.tpl.php'; ?> 

nodo-taxonomy.tpl.php

<div id="node-<?php echo $node->nid; ?>" class="node<?php if($sticky) echo ' sticky'; ?><?php if(!$status) echo ' node-unpublished'; ?>"> 
    <div class="taxonomy-node"> 
     <div class="node-body"> 
     <a class="node-title" href="<?php echo $node_url ?>" title="<?php echo $title ?>"> 
      <?php echo $title ?> 
     </a> 
     <span class="node-cck-field"> 
      <?php echo $node->field_cck_blah[0]['view']; ?> 
     </span>        
     </div>     
    </div> 
</div> 

Bene, la parte più importante: per impostazione predefinita lo node-taxonomy.tpl.php non è noto a Drupal, quindi è necessario introdurre questo come suggerimento del modello nel file template.php del nostro tema, qui andiamo:

/** 
* Adding custom PHPTemplate suggestions on taxanomy pages. 
* 
* @param $vars 
* A sequential array of variables to pass to theme template. 
*/ 
function phptemplate_preprocess_node(&$vars) { 
    if(arg(0) == 'taxonomy'){ 
    $suggestions = array('node-taxonomy'); 
    $vars['template_files'] = array_merge($vars['template_files'], $suggestions); 
    } 
} 

Inoltre v'è una taxonomy-term.tpl.php, per quanto riguarda Drupal 7.
E 'un esempio di codice, dont' dimenticare di usare check_plain() & check_url() sulle stampe.

+0

Grazie Sepehr! Funziona, ma tutti i blocchi di visualizzazioni sulla pagina ottengono lo stesso trattamento di formattazione ... (vengono visualizzati come teaser di nodi) C'è un modo per impedire la distruzione delle mie visualizzazioni? – askon

+0

Sei incredibile. – Steve

1

È un uso migliore seguente codice nel template.php

foreach ($vars['node']->taxonomy as $term) { 
    $vars['template_files'][] = 'node-term-'. $term->tid; 
    } 

Poiché è possibile utilizzare i nomi di file come il nodo-termine-LA-TERM-ID.tpl.php per ogni termine.

se si vuole rendere un uso più efficiente:

if ($hook == 'node') { 
     if (arg(0) == 'taxonomy') { 
     foreach ($vars['node']->taxonomy as $term) { 
     $vars['template_files'][] = 'node-term-'. $term->tid; 
     } 
    } 
    } //if bracket close 
Problemi correlati