Drupal - условный PHP, если узел помечен определенным термином таксономии - PullRequest
1 голос
/ 08 апреля 2011

Как я могу написать некоторый условный PHP, чтобы сделать что-то, если узел помечен определенным термином?

Я хочу изменить свой файл node-type.tpl.php, этот код предназначен для страницы узла, а не для страниц со списком таксономий.

В идеале id хотел бы использовать текстовое имя термина, а неего числовое имя.Это только облегчает мне, когда я смотрю на код позже.

Если быть точным, я действительно хочу напечатать некоторые вещи, если у узла нет определенного тега.

Спасибо

ОБНОВЛЕНИЕ

Я получил его код отмодуль шаблона содержимого:

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

Он печатает имя термина, если идентификатор термина равен 2. Поэтому можно ли изменить его для печати чего-то другого, если идентификатор термина равен 2?

Ответы [ 4 ]

1 голос
/ 08 апреля 2011

Работаю с:

<?php if ($node->taxonomy[5]): ?> 
    print stuff here
<?php endif; ?> 

Спасибо за ваши ответы, ребята.Они могут быть более мощными решениями или лучше чем-то другим, но они были вне моего понимания для реализации.

0 голосов
/ 09 апреля 2011

В 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);
}

В узле- [тип] .tpl.php

print $my_term_links;
0 голосов
/ 08 апреля 2011

Это довольно легко сделать, создав файл node- [type] .tpl.php в вашей теме. Используя чистый PHP, просто проверьте, имеет ли узел конкретный термин таксономии, и распечатайте что-нибудь или нет, как требуется.

Вы можете настроить /modules/node/node.tpl.php или node.tpl.php в своей теме.

Вы можете найти полезными taxonomy_node_get_terms и taxonomy_node_get_terms_by_vocabulary .

0 голосов
/ 08 апреля 2011
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;
    }
  }
}
...