Як працюють контекстні фільтри Views?


9

Я намагаюся знову обернути голову навколо контекстуальних фільтрів! Я використав це деякий час назад, але я просто повністю заткнувся знову. Ось що я намагаюся зробити:

  1. Створіть сторінку клонованого вмісту з термінами таксономії, вставленими на цю клоновану сторінку.

напр .: EXAMPLE.com/white-shoes/blue

Коли користувач перейде на сторінку / білі черевики, він покаже оригінальну сторінку вузла, орієнтовану на білий колір. Тепер, якщо користувач приземлиться на / white-shoes / blue, він покаже ту саму сторінку вузла, але цього разу весь вміст тіла буде переписаний, замінивши білий колір синім кольором.

У Переглядах я повинен створити відображення сторінки із контуром:% /%

Тепер я створив би контекстний фільтр, щоб отримати nid. Я додаю Content: nid як контекстний фільтр. Я вибираю НАДАЙТЕ ЗАМОВЛЕННУ ЦІННІСТЬ і ввожу цей PHP-код:

$ x = drupal_lookup_path ('джерело', arg (0));

$ y = вибухнути ('/', $ x);

повернути $ y 1 ;

Цей PHP-код в основному перетворює частину URL-адреси / white-shoes в NID. Але це не працює. Я перевірив код через drush ev через термінал, і я дійсно отримую повернутий результат, тому я знаю, що він працює.

Я роблю те саме для назви терміна таксономія і додаю контекстний фільтр для цього також. Цього разу я вибираю НАДАТИ ЗАМЕЧАННУ ВІДПОВІДНІСТЬ і вибираю RAW VALUE OF URL та вибираю 2-й аргумент.

введіть тут опис зображення

Як ви бачите, коли я ввожу значення попереднього перегляду для контекстного фільтра: AAA / BBB / CCC. Моє значення за замовчуванням ігнорується. Це має бути захоплення 2-го аргументу, але він отримує лише перший. Подивіться на вислів SQL ДУЙ, і ви побачите, що він отримує AAA, коли він повинен бути BBB.

введіть тут опис зображення

Отже, питання полягає в тому, що я роблю неправильно чи є краще рішення того, що я хочу досягти?


Це звучить нерозумно, але ви могли б надати трохи детальніше? Я трохи часу розумію, що ви намагаєтесь, більше про те, як ви намагаєтеся це зробити. Замість використання Raw-значення або Забезпечення за замовчуванням використовуйте Content ID з URL-адреси. Це забезпечить NID.
kyletaylored

привіт кайле, немає ідентифікатора вмісту з моменту посадки на URL: / білі черевики / блакитні .... URL-адрес / blue не існує як його відображений переглядами. тому немає ідентифікатора вмісту, який потрібно захопити ... він повинен проаналізувати 1-й аргумент URL-адреси, а потім перетворити цей URL у шлях NID.
Патоші パ ト シ

Відповіді:


2

Ось відео та пов’язана з ним стаття, яка пояснить, як ними користуватися. У прикладі використовуються домашні тварини (Собаки, Коти), що може бути досить простим прикладом, щоб зрозуміти, як використовувати контекстні фільтри Views.

ВІДЕО: https://www.youtube.com/watch?v=lJFMTDuaxy8 (короткий URL-адрес відео YouTube: lJFMTDuaxy8)

СТАТТЯ: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views


5

Контекстуальний фільтр використовується для фільтрації, виведення подання за допомогою аргументів URL, а також ви можете передавати аргументи вручну в такому форматі:

<?php print views_embed_view($name,$display_id,$arg1,$arg2,$arg3); ?>

де "name name" - це назва вашого перегляду (наприклад, "example_view"), а "$ display_id" - тип відображення вашого перегляду (наприклад, "за замовчуванням"), а "$ arg1, $ arg2, $ arg3" - це аргументи так само, як і в URL.

Аргументи URL мають таку структуру:

http://example.com/arg_1/arg_2/arg_3 (у arg_2 є компонент шляху 2 (на сторінці налаштування перегляду)).

Якщо значення фільтра недоступне:

це означає, що drupal не може знайти жодного фільтра.

Надайте значення за замовчуванням:

коли значення фільтра недоступне, ви можете використовувати цю опцію, щоб створити фільтр для виводу даних, цей фільтр може бути PHP-кодом (якщо модуль фільтру PHP увімкнено), або він може отримати його значення з аргументів URL -> (Невизначене значення з URL). Текстове поле Виняток дозволяє обдурити значення та відобразити всі результати.

Коли значення фільтра доступне

в цьому випадку ви робите перевірку як ваших потреб, так і деяких інших варіантів, коли drupal може знайти значення фільтра.


задано функцію views_embed_view (). як би я завантажував це в піддоріжку / білі черевики / сині? майте на увазі, що / синій не існує як його породжений переглядами. коли користувач доходить до / blue шляху, він повинен проаналізувати 1-й аргумент і отримати NID цього псевдоніма, а потім завантажити його вміст. Проблема з контекстними фільтрами полягає в тому, що немає можливості надати значення PHP, КОГО ВИСТАВКА ФІЛЬТРА ДОСТУПНА.
Патоші パ ト シ

@duckx, Є чудовий варіант надати значення PHP, коли фільтр доступний - VALIDATION (type: PHP Code). За допомогою цієї опції ви можете використовувати об’єкт перегляду та робити все необхідне. У вашому випадку /blueшлях, згенерований представленнями, також буде використаний для отримання ідентифікатора вузла цього псевдоніма.
Джек-ПЛ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.