Я пытаюсь снова обернуть голову вокруг контекстных фильтров! Я использовал это некоторое время назад, но я снова был полностью ошарашен. Вот что я пытаюсь сделать:
- Создайте страницу узла клонированного контента с терминами таксономии, вставленными в эту клонированную страницу.
Например: 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.
Итак, вопрос в том, что я делаю неправильно или есть лучшее решение для того, чего я хочу достичь?