Использование View PHP, фильтрация материалов.

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

Аватар пользователя NKDante NKDante 20 июля 2016 в 16:53

Снова доброго дня. На этот раз столкнулся с такой проблемой. Нужно вывести ряд материалов через views, в зависимости от значения переменной в сессии. Пытаюсь сделать это с помощью модуля Views PHP (позволяет добавить код пхп как критерий фильтрации материалов). Так вот, мне нужно одно из полей материала сравнить с $_SESSION['что-то_там']. Проблема заключается в том, что я не могу получить значение поля материала, чтобы сравнить его с этой переменной.
Пытался делать вот так:

<?php
if(isset($_SESSION['city']))
{
$city $row->field_city['und']['0']['value'];
if(
$_SESSION['city'] != $city)
{ return 
true; }
else
{ return 
false; }
}
?>

Как и ожидалось, код не работает.

Комментарии

Аватар пользователя gun_dose gun_dose 21 июля 2016 в 8:33

Фигнёй занимаетесь. View PHP вообще такой модуль, который лучше не использовать никогда. В вашем случае лучше воспользоваться не фильтром, а контекстным фильтром. Нажать опцию, что если фильтра нет в урл, то передать значение по умолчанию, выбрать там опцию пхп-код и написать:

<?php
$argument 
$_SESSION['city'];
?>
Аватар пользователя NKDante NKDante 21 июля 2016 в 10:37

Долго бился, решил задачу! Может пригодится кому:
gun_dose был прав, но не совсем, в фильтр нужно передавать не значение, а tid, и использовать return, а не $argument. Получилось так:

<?php
$terms 
taxonomy_get_term_by_name($_SESSION['city']);
$tid key($terms);
return 
$tid;
?>
Аватар пользователя sas@drupal.org sas@drupal.org 23 июля 2016 в 7:14

Хватит гнать на PHP filter = востребованный модуль, не для чистоплюев, много делает гибкий, а уязвимости поперек и вдоль постоянно правят и без него . Лучшее решение = то которое работает уже. В Друпале можно многое реализовать по разному и это не повод хаять другие варианты если конечно позволяет скромность и уровень знаний.