Гуру, кто-нибудь с подобным сталкивался?
Задача: отфильтровать во views заданные ноды по аргументу, где аргумент — одно или более значений node reference nid в фильтруемых нодах.
Визуально это можно представить как
http://mysite.com/gallery/1
http://mysite.com/gallery/1,2,3 etc.
здесь аргументом является nid галереи. Да-да, галерея это нода. Так надо..
Ссылки на галерею формируются программно где-то на страницах сайта.
Решение N1: через exposed filter. Сам фильтр темизируем и прячем, в галерее его не видно. Это работает, но .. выглядит неаккуратненько как-то!
Решение N2: через аргументы. Но, стандартно формируемый фильтр не принимает больше одного значения аргумента. То есть используется всегда только первое значение из "1,2,3"
Был опробован метод динамического добавления фильтра в коде аргумента
$new_args = explode(',', $args[0]);
views_view_add_filter($view, 'node_data_field_nomenclature', 'field_nomenclature_nid', 'OR', $new_args, '');
views_sanitize_view($view);
return $args;
Это результирует в SQL ошибку, об этом народ жалуется на форуме drupal.org. К сожалению, issue закрыто с "won't fix" — мол, обращайтесь к разработчикам views, некогда нам
Может кто-то сталкивался с подобной задачей и удачно её решил вторым способом?
Да, версия Views 5.x-1.6
Комментарии
а может вам попробывать писать аргументы не через запятую, а через знак плюса?
Пробовал, разумеется. В случае штатного описания аргумента это не работает. В случае собственной обработки это не имеет значения, поскольку разбор аргументов и подключение фильтра производится вручную.