Я пытаюсь снова обернуть голову вокруг контекстных фильтров! Я использовал это некоторое время назад, но я снова был полностью ошарашен. Вот что я пытаюсь сделать:
- Создайте страницу узла клонированного контента с терминами таксономии, вставленными в эту клонированную страницу.
Например: EXAMPLE.com/white-shoes/blue
Когда пользователь достигает страницы / white-shoes, он показывает исходную страницу узла, ориентированную на белый цвет. Теперь, если пользователь попадает в / white-shoes / blue, он покажет ту же страницу узла, но на этот раз все содержимое тела будет переписано с заменой белого цвета на синий.
В представлениях мне нужно создать отображение страницы с путем:% /%
Теперь я бы создал контекстный фильтр для получения nid. Я добавляю Content: nid в качестве контекстного фильтра. Я выбираю ПРЕДОСТАВИТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ и вставляю этот код PHP:
$ x = drupal_lookup_path ('source', arg (0));
$ y = взорваться ('/', $ x);
вернуть $ y 1 ;
Этот PHP-код в основном преобразует часть URL / white-shoes в NID. Но это не работает. Я проверил код через drush ev через терминал, и я действительно получил возвращенный результат, так что я знаю, что он работает.
Я делаю то же самое для названия термина таксономии и добавляю контекстный фильтр для этого. На этот раз я выбираю ПРЕДОСТАВИТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, выбираю RAW VALUE FROM URL и выбираю второй аргумент.
Как вы можете видеть, когда я ввожу ПРЕДВАРИТЕЛЬНОЕ ЗНАЧЕНИЕ для контекстного фильтра: AAA / BBB / CCC. Мое значение по умолчанию игнорируется. Предполагается, что он захватывает второй аргумент, но он получает только первый аргумент. Посмотрите на оператор SQL WHERE, и вы увидите, что он получает AAA, когда он должен быть BBB.
Итак, вопрос в том, что я делаю неправильно или есть лучшее решение для того, чего я хочу достичь?
Ответы:
Вот видео и связанная с ним статья, которая объяснит вам, как их использовать, в примере используются домашние животные (собаки, кошки), что может быть достаточно простым примером, чтобы помочь понять, как использовать контекстные фильтры представлений.
ВИДЕО: https://www.youtube.com/watch?v=lJFMTDuaxy8 (короткий URL-адрес видео YouTube: lJFMTDuaxy8)
СТАТЬЯ: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views
источник
Контекстный фильтр используется для фильтрации вывода представления по аргументам URL, также вы можете передать аргументы вручную в следующем формате:
где «$ name» - это имя вашего представления (например, «example_view»), а «$ display_id» - тип отображения вашего представления (например, «default»), а «$ arg1, $ arg2, $ arg3» - аргументы. так же, как в URL.
Аргументы URL имеют следующую структуру:
http://example.com/arg_1/arg_2/arg_3 (arg_2 имеет компонент пути 2 (на странице настроек просмотра)).
Когда значение фильтра недоступно:
это означает, что drupal не может найти фильтр.
Укажите значение по умолчанию:
когда значение фильтра недоступно, вы можете использовать эту опцию, чтобы создать фильтр для вывода представлений, этот фильтр может быть кодом PHP (если включен модуль фильтра PHP) или он может получить свое значение из аргументов URL -> (необработанное значение из URL). Текстовое поле Исключение позволяет вам обмануть значение и отобразить все результаты.
Когда значение фильтра доступно
в этом случае вы выполняете проверку в соответствии со своими потребностями и некоторые другие параметры, когда drupal может найти значение фильтра.
источник
VALIDATION (type: PHP Code)
. С помощью этой опции вы можете использовать вид объекта и делать все, что вам нужно. В вашем случае/blue
путь, сгенерированный представлениями, будет также использоваться для получения идентификатора узла этого псевдонима.