2010-04-16 17 views

Respuesta

1

La página de la taxonomía no es mágica en absoluto, ya que requiere algo especial para el tema. Hay un archivo de plantilla, una función de preproceso y algunas funciones de tematización, al igual que cualquier página.

Si desea controlar el resultado de la página de taxonomía predeterminada que es un poco cruda, puede usar las vistas para sobrescribir la página predeterminada. A continuación, puede usar las vistas para mostrar solo los avances de nodos, hacer algunos pedidos personalizados, usar un buscapersonas, etc.

Si desea hacer algo más específico, debe editar su pregunta para decirnos qué desea hacer.

12

En Drupal 6, puede hacer uso de los archivos node-taxonomy.tpl.php y page-taxonomy-term.tpl.php en su tema para plantillas de páginas de taxonomía, ya que el segundo es el contenedor de la primera. Compórtese node-taxonomy.tpl.php como node.tpl.php y page-taxonomy-term.tpl.php como page.tpl.php. por ejemplo:

página-taxonomía-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> 

Bueno, la parte más importante: por defecto el node-taxonomy.tpl.php no es conocido por Drupal, por lo que debemos presentarlo como una sugerencia de plantilla en el archivo de nuestro tema template.php, aquí vamos:

/** 
* 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); 
    } 
} 

También hay un taxonomy-term.tpl.php, en relación con Drupal 7.
Es un ejemplo de código, 'No se olvide de utilizar check_plain() & check_url() en las impresiones.

+0

Gracias Raamtin! Esto funciona, pero todos mis bloques de vistas en la página obtienen el mismo tratamiento de formateo ... (se muestran como avances de nodos) ¿Hay algún modo de evitar que destruya mis puntos de vista? – askon

+0

Eres increíble. – Steve

1

Será mejor uso siguiente código en template.php

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

Como se puede utilizar nombres de archivo como nodo plazo-SU PLAZO-ID.tpl.php para cada término.

si quieres que sea un uso más eficiente:

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