Поиск общего подхода для передачи пользовательских списков идентификаторов узлов в качестве аргумента для представлений 3.x
Мне часто нужно исключать (или ограничивать) пользовательский список узлов из представления. Раньше я вводил логику PHP непосредственно в текстовую область кода аргумента php, но это становится все труднее поддерживать. Я хотел бы сохранить логику в модуле или template.php .
Что мне нужно, так это общий подход для возврата списка nid (nid1+nid2+nid3...) в коде аргумента php представления. Я попытался использовать описанный подход здесь, но я могу сделать он работает только для отображения блоков, а не для отображения страниц.
Например, у меня есть тип контента, в котором узлы могут произвольно ограничиваться пользователями, прошедшими проверку подлинности, с помощью Доступа к контенту модуля настроек для каждого узла. Мне нужно отобразить в представлении только те узлы, исключая те, которые видны анонимным пользователям. Поскольку в представлениях для этого нет фильтра, я создал простую функцию для извлечения идентификаторов узлов и сохранения их в переменной (nid1+nid2+nid3...).
Я я изо всех сил пытаюсь понять, куда поместить эту логику (theme_preprocess_views_view()
, пользовательскую theme_preprocess_func()
, mymodule_preprocess_func()
, и т.д.) для того, чтобы иметь возможность использовать эту переменную в любом коде аргумента PHP представления.
TL;DR: Мне нужен общий подход для возврата списка nid (nid1+nid2+nid3...) в коде аргумента PHP представления, сохранения логики php в модуле или теме.
1 answers
Что вам действительно нужно, так это "плагин по умолчанию для аргументов". Некоторые из них доступны в самих представлениях, один из них - php, который вы уже используете.
На самом деле это не так уж сложно написать. Для этого вам понадобятся следующие крючки:
- hook_views_api
- hook_views_плюгины
После этого вам нужно создать плагин и, что самое важное, написать функцию get_argument(), которая возвращает аргументы.