【问题标题】:Adding conditions to a view template file in Drupal在 Drupal 中向视图模板文件添加条件
【发布时间】:2015-09-07 11:13:28
【问题描述】:

我需要将条件添加到硬编码到 Drupal 7 主题的模板文件中的按钮。我希望“比较”按钮仅出现在附加了某些分类术语的产品的节点页面上。我想,它可以用一个简单的 IF 来完成,但我不是开发人员,只知道 PHP 语法的基础知识,所以如果有人能详细描述如何实现解决方案,我将不胜感激,甚至提供我可以自定义并粘贴到正确位置的 sn-p 代码!

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

这是 node--product.tpl.php 文件的代码中的部分,用于显示操作按钮。我想要第二个,比较按钮只出现在具有某些分类术语的节点上。

提前谢谢你!

胡巴

【问题讨论】:

    标签: drupal drupal-7 drupal-taxonomy drupal-templates


    【解决方案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”替换为您的 tid 列表。

    【讨论】:

    • 再问一个简短的问题:我的产品网格上的项目需要同样的逻辑,它有另一个模板文件,其中显示按钮的代码如下所示: content); ?> content); ?>
      我想,我必须定义,从哪里提取分类术语,所以它需要一些修改,我应该怎么做?
  • 只需在我的答案中的代码之前添加这一行:$node = node_load($fields['nid']->content);
  • 完美!再次感谢您!
  • 嘿!很抱歉再次打扰你,但我必须用另一个视图模板再次做几乎相同的事情 - 将列表视图中显示的产品的售价值与固定值进行比较,如果它更大并且打印 smt 其他东西如果更小 - 我使用什么语法来比较售价和固定值? :> 对不起新手的问题,当我完成这个网站后,我要去上 php 课程....:p
  • 猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多