Drupal - 条件PHP,如果节点标记有某个分类术语

时间:2011-04-08 09:48:40

标签: drupal drupal-theming

如果一个节点标记了某个术语,我怎么能写一些条件PHP来做某事?

我想更改我的node-type.tpl.php文件,此代码用于节点页面,而不是分类列表页面。

理想情况下,我喜欢使用术语的文本名称,而不是它的数字名称。这让我在以后查看代码时更容易。

具体来说,我实际上想要打印一些东西,除非节点有某个标签。

谢谢

更新

我从内容模板模块中获取了他的代码:

<?php print $node->taxonomy[2]->name ?>

如果术语ID为2,则打印术语名称。如果术语ID为2,是否可以修改其他内容?

4 个答案:

答案 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_termstaxonomy_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;