Поиск общего подхода для передачи пользовательских списков идентификаторов узлов в качестве аргумента для представлений 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 в модуле или теме.

 2
Author: kiamlaluno, 2011-04-21

1 answers

Что вам действительно нужно, так это "плагин по умолчанию для аргументов". Некоторые из них доступны в самих представлениях, один из них - php, который вы уже используете.

На самом деле это не так уж сложно написать. Для этого вам понадобятся следующие крючки:

  • hook_views_api
  • hook_views_плюгины

После этого вам нужно создать плагин и, что самое важное, написать функцию get_argument(), которая возвращает аргументы.

 2
Author: Daniel Wehner, 2011-04-26 05:50:48