虽然很容易在网上找到关于如何主题其他内容(例如搜索结果)的一些信息,但是找不到关于如何主题分类/术语/ 247页的输出的简单文章?
我该怎么做?
答案 0 :(得分:12)
在Drupal 6中,您可以使用主题中的node-taxonomy.tpl.php
和page-taxonomy-term.tpl.php
文件来模拟分类法页面,考虑到第二个是第一个的包装器。行为node-taxonomy.tpl.php
,如node.tpl.php
和page-taxonomy-term.tpl.php
,如page.tpl.php
。例如:
页面分类法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'; ?>
节点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>
嗯,最重要的部分:默认情况下,Drupal不知道node-taxonomy.tpl.php
,所以我们需要在我们的主题template.php
中将其作为模板建议引入文件,我们走了:
/**
* 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);
}
}
还有一个taxonomy-term.tpl.php
,关于Drupal 7.
这是一个代码示例,不要忘记使用check_plain()
&amp;打印输出check_url()
。
答案 1 :(得分:1)
分类法页面在任何需要特殊主题的主题中都不是神奇的。有一个模板文件,一个预处理函数和一些主题函数,就像任何页面一样。
如果您想控制默认分类页面的输出(有点原始),您可以使用视图覆盖默认页面。然后,您可以使用视图仅显示节点标记,执行一些自定义排序,使用寻呼机等。
如果你想做更具体的事情,你应该编辑你的问题,告诉我们你想做什么。
答案 2 :(得分:1)
您最好在template.php中使用以下代码
foreach ($vars['node']->taxonomy as $term) {
$vars['template_files'][] = 'node-term-'. $term->tid;
}
因为您可以为每个术语使用node-term-YOUR-TERM-ID.tpl.php等文件名。
如果你想更有效地使用它:
if ($hook == 'node') {
if (arg(0) == 'taxonomy') {
foreach ($vars['node']->taxonomy as $term) {
$vars['template_files'][] = 'node-term-'. $term->tid;
}
}
} //if bracket close