如果一个节点标记了某个术语,我怎么能写一些条件PHP来做某事?
我想更改我的node-type.tpl.php文件,此代码用于节点页面,而不是分类列表页面。
理想情况下,我喜欢使用术语的文本名称,而不是它的数字名称。这让我在以后查看代码时更容易。
具体来说,我实际上想要打印一些东西,除非节点有某个标签。
谢谢
更新
我从内容模板模块中获取了他的代码:
<?php print $node->taxonomy[2]->name ?>
如果术语ID为2,则打印术语名称。如果术语ID为2,是否可以修改其他内容?
答案 0 :(得分:1)
使用它:
<?php if ($node->taxonomy[5]): ?>
print stuff here
<?php endif; ?>
感谢您的回答。它们可能是更强大的解决方案,或者在某些其他方面更好,但是我们无法实现它们。
答案 1 :(得分:0)
function phptemplate_preprocess_node(&$variables){
/*
* You can change $variables items
* or add own
* Then use defined variables in node-type.tpl.php
*/
}
我自己的预处理
/**
* Override or insert PHPTemplate variables into the templates.
*/
function phptemplate_preprocess_node(&$vars) {
$node = $vars['node'];
if ($node->build_mode === NODE_BUILD_NORMAL || $node->build_mode === NODE_BUILD_PREVIEW) {
$build_mode = $vars['teaser'] ? 'teaser' : 'full';
}
elseif ($node->build_mode === NODE_BUILD_RSS) {
$build_mode = 'rss';
}
else {
$build_mode = $node->build_mode;
}
$vars['template_files'][] = 'node--' . $build_mode;
$vars['template_files'][] = 'node-' . $node->type . '-' . $build_mode;
$vars['template_files'][] = 'node-' . $node->type . '-' . $build_mode . '-' . $node->nid;
$preprocess = array(
'report_preprocess_node_' . $node->type,
'report_preprocess_node__' . $build_mode,
'report_preprocess_node_' . $node->type . '_' . $build_mode,
'report_preprocess_node_' . $node->type . '_' . $build_mode . '_' . $node->nid
);
foreach (array_reverse($preprocess) as $function) {
if (function_exists($function)) {
$function($vars);
break;
}
}
}
答案 2 :(得分:0)
通过在主题中创建node- [type] .tpl.php文件,可以轻松完成此操作。使用纯PHP,只需检查节点是否具有特定的分类术语,并根据需要打印或不打印。
您可以在主题中自定义/modules/node/node.tpl.php或node.tpl.php。
您可能会发现taxonomy_node_get_terms和taxonomy_node_get_terms_by_vocabulary很有用。
答案 3 :(得分:0)
在template.php中
function phptemplate_preprocess_node(&$variables){
$node = $variables['node'];
$taxonomy = $node->taxonomy;
$items = array();
foreach($taxonomy AS $term){
$items[] = l($term->name, taxonomy_term_path($term));
}
$variables['my_term_links'] = theme_item_list($items);
}
在node- [type] .tpl.php
中print $my_term_links;