【问题标题】:Drupal 8 - Ignore contextual filterDrupal 8 - 忽略上下文过滤器
【发布时间】:2018-07-25 22:44:22
【问题描述】:

在链接到搜索 api 和构面的搜索视图中,我想在我的内容类型上添加上下文过滤器。 此内容类型具有引用的实体字段,链接到分类术语(一个字段与目标词汇的分类,另一个与活动词汇的分类)

所以,我创建了 2 个上下文过滤器,每个“分类字段”一个。

view

filter

但是,我似乎只应用了第一个过滤器(目标)。如果来自 URL 的分类术语是目标,则视图会显示正确的结果。但如果它是一个活动,它会显示所有内容。所以我认为上下文过滤器验证器存在问题:“如果过滤器值未验证要采取的措施”应该有类似“忽略过滤器”选项的内容,因为使用“显示指定字段的所有结果”,它会显示所有内容,但是不要执行下一个过滤器。

谁有解决办法?

非常感谢

【问题讨论】:

    标签: drupal drupal-views drupal-8 drupal-contextual-filters


    【解决方案1】:

    最后,我找到了一个解决方案,只是在 pre_build 中改变视图

    /**
    * Implements hook_views_pre_build().
    */
    
    function my_module_views_pre_build(ViewExecutable $view)
    {
        if ($view->id() == 'tour_search' && $view->current_display == 'tours_taxonomy') {
    
            $tid = reset($view->args);
    
            if (! $tid) {
                return;
            }
    
            /** @var Term $term */
            $term = Term::load($tid);
    
            if ($term->getVocabularyId() === 'activities') {
                unset($view->argument['field_tour_destination']);
                return;
            }
    
            if ($term->getVocabularyId() === 'destinations') {
                unset($view->argument['field_tour_activity']);
                return;
            }
    
            return;
        }
    }
    

    我在这个钩子中移动了验证逻辑,通过一个简单的术语词汇测试取消过滤器。

    希望它能帮助别人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多