[Решено] Контестный фильтр Search: Search terms во Views

Главные вкладки

Аватар пользователя Sandy Big Boy Sandy Big Boy 30 марта 2013 в 12:24

Привет всем! Ситуация такая: используя модуль Page Manager (search-node), переопределяю страницу поиска, на которой использую как раз представление с контекстным фильтром Search: Search terms, в результате чего при выдаче результатов поиска вижу нужное мне представлением. Но есть проблема: если я использую поиск с возможностью указания типа материала для поиска, то в качестве аргумента представление получает не просто слово введенное в строку поиска, но еще и добавку в виде type:<типа материала>. В результате контекстный фильтр не срабатывает.

Вопрос как можно и использовать выбор типа материала и чтобы контекстный фильтр работал. Если нет соответсвующих настроек у модулей, может быть можно как-то программно решить проблему. В программной архитектуре Drupal, разбираюсь слабо, но в любом случае буду благодарен, если хотя бы пнете в нужном направлении.

Комментарии

Аватар пользователя Sandy Big Boy Sandy Big Boy 2 апреля 2013 в 10:30

Оказывается все не так уж и сложно. Smile Это если знать тонкости Views конечно. Оказывается просто нужно задать Validation criteria в виде PHP Code (я уже тыкаясь во всюда случайно заметил, что оказывается здесь можно не только проверить аргумент, но и изменить его. В общем вставляем в поле PHP Code вот такой код:

$mystring = $argument;
$pos = strpos($mystring, 'type:');
if ($pos !== False) {
$handler->argument = substr_replace($mystring, '', $pos);
} else {
$handler->argument = $argument;
}
return TRUE;

и требуемое поведение достигнуто.

P.S. Может быть опытныю люди прокомментируют, есть ли недостатки у такого решения.