views PHP в фильтре представления

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

Аватар пользователя vert4 vert4 2 августа 2019 в 7:03

Спасайте! Задолбался уже.

Стоит простая задача меньше, чем на выпитую чашку кофе.

Вывести представление для юзера с его товарами.
Название Цена
Но
отфильтровать его товары и исключить товары по цене Ноль, т.е. бесплатные и вывести эти товары потом в другой вьюхе.
Цена товара формируется по разному т.е. используется модуль Discount (Скидки).
При добавлении в представление поля Цена, есть замечательная галочка показывать индивидуальную цену и это поле выводит соответственно цену товара со всеми персональными скидками для каррент юзер.
Но
При добавлении этого же поля в Фильтр, там этой волшебной галочки нет и фильтрует по значению полной цены, а нужно же для каждого пользователя по его ценам фильтровать.

Начал пляски с views PHP выудил правильную цену такой конструкцией

$prc = $data->field_commerce_price[0]['raw']['amount'];
print $prc;

Проверил вставил в php поле представления, показывает правильную цену со всеми скидками.

Теперь перехожу к фильтру, нужно в фильтр также вставить Глобал php условие вставляю

 $prc = $data->field_commerce_price[0]['raw']['amount'];
return $prc = 0;

Но не работает... Проверил dpm ($prc); выдает пустые значения....
Как только я не игрался с этим php полем в фильтре. И подключал setup code вставлял туда значение переменной и через конструкцию if пробовал ну ни как.
Главное, что проверка показывает, что не работает мой вывод, хотя если этот же код поставить в поле представления тоже как глобал php все нормально выводит нужную цену.

Очень прошу помощи.
Спасибо

Комментарии

Аватар пользователя vert4 vert4 2 августа 2019 в 14:33

так не работает пробовал. Видимо логика вывода переменной для полей фильтра и для полей представления разные.
потому что когда

dpm ($prc = $data->field_commerce_price[0]['raw']['amount']);

вставлено в поле представления то результат показывает правильный (выводит нужные цены)
вставляю в php поле фильтра - результат null для всех строк представления.

Аватар пользователя vert4 vert4 2 августа 2019 в 15:08

[quote=VasyOK]Через views conditions никак?[/quot]
по-русски это критерии фильтрации? Если да, то проблему с этим описывал в самом описании проблемы. В фильтр views можно вывести только полную цену товара, а мне нужно рассчитанную для текущего пользователя

Аватар пользователя vert4 vert4 2 августа 2019 в 16:27

views conditions - да он понимает правильную цену, но он не скрывает строку, он использует значение поля цена для построения своего вывода, если да то выведет что-то, если нет, то выведет другое. А мне нужно убрать из вывода товары по цене ноль.. Но за наводку спасибо, для других целей очень да же понадобится

Аватар пользователя VasyOK VasyOK 2 августа 2019 в 17:19

vert4 wrote:
если да то выведет что-то, если нет, то выведет другое

т.е. вариант если нет, то ничего не выведет вас не устраивает?

Аватар пользователя vert4 vert4 2 августа 2019 в 17:40

Так он в свое поле выводит значение. Он не скрывает строку с товаром по цене ноль, он просто добавляет в представление свое поле к которому можно прописать условие в зависимости от другого поля. Т.е. строка с товаром по цене ноль в представлении остается к строке добавляется это поле Condition

Аватар пользователя vert4 vert4 2 августа 2019 в 18:40

Я понимаю почему фильтр не хочет "кушать" мой вывод условия. Он не понимает по какому товару ему выводить цену, т.е. нужно еще передать ID товара, а вот как туда передать его не понимаю.

Аватар пользователя Orion76 Orion76 2 августа 2019 в 18:52

Лет надцать назад ковырялся я с этими "индивидуальными" ценами товаров коммерца.
Поэтому подробности уже "затерлись"..-)
В том случае это была цена для "региона", т.е. некоего текущего "контекста".
У вас скорее всего цены для пользователей по тому же принципу.

Так вот.. "индивидуальная" цена бралась из кэша, скорее всего идентификатор записи кэша как-то был связан текущим "контекстом".
А вьюс просто делает запросы к полям-таблицам БД, поэтому и цену выдает не "индивидуальную".

Теоретически, можно сделать чтобы вьюс выдавал индивидуальную цену, но надо как-то джойнить в запросе вьюса таблицу кэша по индентификатору кэша, построеному на основе необходимого контекста.

Так-то функционал не слишком экзотический.. может что-то уже есть на орге или гитхабе.
Ну или самому самописный модуль самописать-)

Аватар пользователя vert4 vert4 2 августа 2019 в 18:59

Да с выводом индивидуальной цены во вьюс проблемы не стоит, справился выводит, вот как отфильтровать по этому индивидуальному значению цены.... вот вопрос )) Видимо да... на такой простой , казалось, задаче придется самописательством заняться )