Сложные PHP контекстные фильтры Views
03 апреля 2020
Создание контекстного фильтра на базе нескольких полей через термин таксономии
В контекстных фильтрах надо установить разрешение на использование множественных значений ('+' и ',')
Пример для поля ссылки на термины таксономии
$term = taxonomy_term_load(arg(2));
if (!empty($term->field_categories)){
$categories = $term->field_categories['und'];
foreach($categories as $category){
$cat_ids[] = $category['tid'];
}
return implode('+',$cat_ids);
}else{
return 'all';
}
Пример для поля ссылки на ноды через ссылку на сущности
$term = taxonomy_term_load(arg(2));
if (!empty($term->field_products)){
$nids = $term->field_products['und'];
foreach($nids as $nid){
$ids[] = $nid['target_id'];
}
return implode('+',$ids);
}else{
return 'all';
}Важно указать значение 'all' для случая, когда проверка PHP фильтра не приносит положительного результата. Контекстные ссылки выполняются все одновременно