Добавление условий в файл шаблона представления в Drupal

Мне нужно добавить условие к кнопке, жестко закодированной в файле шаблона в теме Drupal 7. Я хотел бы, чтобы кнопка «Сравнить» появлялась только на страницах узлов продуктов, к которым прикреплены определенные термины таксономии. Я думаю, это можно было бы сделать с помощью простого ЕСЛИ, но я не разработчик и знаю только самые основы синтаксиса PHP, поэтому я был бы очень благодарен, если бы кто-то мог подробно описать, как реализовать решение, возможно, даже предоставьте фрагмент кода, который я могу настроить и вставить в нужное место!

<div class="actions">
    <?php print flag_create_link('wishlist', $node->nid); ?>
    <?php print flag_create_link('compare', $node->nid); ?>
  </div><!-- .actions -->
</div>

This is the section in the code of the node--product.tpl.php file that puts out the action buttons. I would like the second one, the compare button to only appear for nodes that have certain taxonomy terms.

Заранее спасибо!

Хуба


person Huba Gáspár    schedule 07.09.2015    source источник


Ответы (1)


Вы можете использовать следующий код.

<?php
  $display_compare = FALSE; // don't display by default
  $tids = array(1, 2, 3); // array of certain taxonomy terms' tids

  foreach ($node->TERM_FIELD_NAME[LANGUAGE_NONE] as $delta => $term) {
    if (in_array($term['tid'], $tids)) {
      $display_compare = TRUE; // display if node has at least one of specified terms
      break;
    }
  }

  if ($display_compare) {
    print flag_create_link('compare', $node->nid);
  }
?>

Пожалуйста, не забудьте заменить «TERM_FIELD_NAME» на имя вашего поля и «1, 2, 3» на ваш список tids.

person quotesBro    schedule 07.09.2015
comment
Еще один короткий вопрос: мне нужна такая же логика для элементов в моей сетке продуктов, у нее есть другой файл шаблона, где код, отображающий кнопку, выглядит так: ‹/span› ‹?php print flag_create_link('wishlist', $ fields['nid']-›content); ?› ‹?php print flag_create_link('compare', $fields['nid']-›content); ?› ‹/div›‹!-- .actions --› Думаю, мне нужно определить, откуда брать термины таксономии, так что это требует некоторой модификации, как мне это сделать? - person Huba Gáspár; 09.09.2015
comment
просто добавьте эту строку перед кодом из моего ответа: $node = node_load($fields['nid']-›content); - person quotesBro; 09.09.2015
comment
Идеальный! Еще раз спасибо! - person Huba Gáspár; 09.09.2015
comment
Привет! извините, что беспокою вас снова, но мне нужно снова сделать почти то же самое с другим шаблоном представления - сравнить значение цены продажи продукта, отображаемого в представлении списка, с фиксированным значением, и напечатать smt, если он больше, и что-то еще если меньше - какой синтаксис я использую для сравнения цены продажи с фиксированной стоимостью? :› извините за новые вопросы, я собираюсь взять уроки php, когда закончу с этим сайтом....:p - person Huba Gáspár; 12.09.2015