簡體   English   中英

Drupal 8-忽略上下文過濾器

[英]Drupal 8 - Ignore contextual filter

在鏈接到搜索API和構面的搜索視圖上,我想在內容類型上添加上下文過濾器。 此內容類型具有引用的實體字段,該實體字段與分類法術語相關聯(一個字段從目標詞匯表到分類法,另一個字段從活動詞匯表到分類法)

因此,我創建了2個頂點過濾器,每個“分類字段”一個。

視圖

過濾

但是,我似乎只應用了第一個過濾器(目標)。 如果我的URL分類法術語是目的地,則該視圖顯示正確的結果。 但是,如果這是一項活動,它將顯示所有內容。 因此,我認為上下文過濾器驗證器存在問題:“如果過濾器值未驗證,應采取的措施”應具有“忽略過濾器”選項之類的內容,因為使用“顯示指定字段的所有結果”時,它將顯示所有內容,但不要執行下一個過濾器。

有人有解決方案嗎?

非常感謝

最后,我找到了一個解決方案,只是更改了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;
    }
}

通過取消過濾器的簡單術語詞匯測試,我將驗證邏輯移到了這個掛鈎中。

希望對別人有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM