drupal - ¿Cómo puedo tematizar la página taxonomía/término/x?
themes taxonomy (3)
Aunque fue fácil encontrar alguna información en línea sobre cómo tema otras cosas (por ejemplo, los resultados de búsqueda), es imposible encontrar un artículo sencillo sobre cómo tema la salida de una taxonomía / término / 247 página?
¿Cómo puedo hacerlo?
Es mejor que uses el siguiente código en template.php
foreach ($vars[''node'']->taxonomy as $term) {
$vars[''template_files''][] = ''node-term-''. $term->tid;
}
Porque puede usar nombres de archivo como node-term-YOUR-TERM-ID.tpl.php para cada término.
si quieres hacerlo más eficiente usa:
if ($hook == ''node'') {
if (arg(0) == ''taxonomy'') {
foreach ($vars[''node'']->taxonomy as $term) {
$vars[''template_files''][] = ''node-term-''. $term->tid;
}
}
} //if bracket close
La página de 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 está 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 nodo, hacer un pedido personalizado, usar un buscapersonas, etc.
Si quieres hacer algo más específico, debes editar tu pregunta para decirnos qué quieres hacer.
En Drupal 6, puede usar los archivos node-taxonomy.tpl.php
y page-taxonomy-term.tpl.php
en su tema para las páginas de taxonomía de plantillas, ya que el segundo es el que cubre el primero. Comportarse node-taxonomy.tpl.php
como node.tpl.php
y page-taxonomy-term.tpl.php
como page.tpl.php
. por ejemplo:
page-taxonomy-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''; ?>
node-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, node-taxonomy.tpl.php
no es conocido por Drupal, así que tenemos que presentar esto como una sugerencia de plantilla en el archivo template.php
nuestro tema, 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 una taxonomy-term.tpl.php
, con respecto a Drupal 7.
Es una muestra de código, no se olvide de usar check_plain()
y check_url()
en las impresiones.