[英]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.