【问题标题】:How to show only the deepest taxonomy term in a drupal view, having used hierarchical select to tag content如何在drupal视图中仅显示最深的分类术语,使用分层选择来标记内容
【发布时间】:2025-11-27 00:20:05
【问题描述】:

我有一个体育用品网站。 我使用分层选择来标记添加到站点的产品 - 并保存术语沿袭,因此分类菜单会自动创建链接到分类页面的漂亮分层菜单 - 我已经使用视图覆盖了这些菜单。

查看示例:http://dayalssports.com/product-menu/badminton/rackets

球拍根据分类术语进行分组。 问题是,随着术语沿袭被保存,分类视图以看似随机的顺序显示所有术语。它不会像您期望的那样显示它们 parent->Child1->Child2 等。

我只想显示最深的词。所以不要有:

球拍 > Y 系列球拍 > 羽毛球

不管怎样,这是不正常的,我只是明白了

Y 系列球拍

有没有办法做到这一点?或者至少有一种方法可以正确订购它们?

顺便说一句 - 术语之间的 > 字符不是默认分隔符,我只是将其设置为,因为我认为术语会按顺序显示。因为它们不是,它看起来有点愚蠢,因为它给人的印象是等级制度。层次结构其实是

羽毛球 > 球拍 > Y 系列球拍

【问题讨论】:

    标签: drupal view drupal-7 taxonomy


    【解决方案1】:

    试试这个:

    function theme_hs_taxonomy_formatter_lineage($variables) {
      $output = '';
      $lineage = $variables['lineage'];
      $separator = theme('hierarchical_select_item_separator');
    
      // Render each item within a lineage.
      $items = array();
      foreach ($lineage as $level => $item ) {
        dpm($item);
        $line  = '<span class="lineage-item lineage-item-level-' . $level . '">';
        $line .= drupal_render($item);
        //this adds a flag link to every term, not just the last term
        if(!count(taxonomy_get_children($item['#options']['entity']->tid))){
          $line .= flag_create_link('hobbies_and_interests', $item['#options']['entity']->tid);
        }
    
        $line .= '</span>';
        $items[] = $line;
      }
      $output .= implode($separator, $items);
      return $output;
    }
    

    参考:https://drupal.stackexchange.com/questions/58691/how-can-i-show-a-flag-link-only-for-the-deepest-terms-for-a-field-with-multipl

    【讨论】:

    • 感谢您的提示,但我的 php 技能非常有限,您能否建议我需要对上述代码执行哪些操作,以便只显示最后一个术语?我不需要标志部分,只是为了输出返回具有*别值的术语。谢谢。
    最近更新 更多