"Выделить" текущий товар Commerce во views

Аватар пользователя shevgeny

Есть нода с несколькими товарами Commerce (товар с различными вариантами, типа "размер", "цвет" и т.п.). На этой же странице показываю views с отображением всех вариантов (товаров). Нужно как-нибудь выделить открытый (выбранный) товар.
Как я полаю, нужно определить id текущего товара (открытого) и назначить товару с этим id во views какой-нибудь класс типа active. Может быть кто-нибудь сталкивался с подобной задачей? Буду очень благодарен.
P.S. JS-решение не подходит.

Модули и темы:
Тип материала:
0 Thanks

Комментарии

Аватар пользователя shevgeny
shevgeny 1 год назад

а могли бы чуть более подробно или ссылочку? гугл не знает)

Аватар пользователя shevgeny
shevgeny 1 год назад

да я не о темизации) это-то понятно, я о том, как в шаблоне views узнать id открытого товара и выполнить проверку с row

Аватар пользователя gun_dose
gun_dose 1 год назад

Надо альтерить аяксовый коллбэк, который висит на селекте в корзине.

Аватар пользователя shevgeny
shevgeny 1 год назад

подождите, а при чем здесь корзина и ajax?

Аватар пользователя gun_dose
gun_dose 1 год назад

Тогда поясните, какой смысл вы вкладываете во фразу "открытый (выбранный) товар"?

Аватар пользователя shevgeny
shevgeny 1 год назад

Прямой. Товар, открытый в ноде, не знаю как сказать иначе. Ваш вопрос поставил меня в тупик.

Аватар пользователя gun_dose
gun_dose 1 год назад

Вы же пишете в первом посте, что в ноде у вас несколько продуктов. Если вы открываете эту ноду, то загружаются все продукты. Вам надо выделить их все или не все?

Аватар пользователя gun_dose
gun_dose 1 год назад

А нафига вам эти две строки вверху, да ещё с перезагрузкой страницы? Бред какой-то. У вас же внизу все эти опции можно нормально выбрать с аяксом.

Аватар пользователя shevgeny
shevgeny 1 год назад

Очень долго объяснять. Но согласитесь, наверное, если бы тот алгоритм, который предлагает коммерс из коробки, подходил, я бы не ломал голову.

Аватар пользователя gun_dose
gun_dose 1 год назад

Если бы это было в коробке, я бы не предлагал решение выше

Аватар пользователя shevgeny
shevgeny 1 год назад

«Надо альтерить аяксовый коллбэк, который висит на селекте в корзине.» — вы об этом? может быть я вас не понял, но кажется, это вообще про другое

Аватар пользователя shevgeny
shevgeny 1 год назад

кажется, начинаю понимать, о чем вы… и, возможно, вы правы. благодарю за направление для размышления

Аватар пользователя Mihail.space
Mihail.space 1 год назад

вам надо чтобы в блоке вьюса был подсвечен товар на странице товара, на которой он находится?

Аватар пользователя shevgeny
shevgeny 1 год назад

Мне нужно подсветить во views товар, который сейчас открыт. К ноде я прикрепляю несколько товаров, которые отличаются (условно) размером и цветом, так вот в блоке views нужно подсветить именно тот, который в текущий момент открыт.

Аватар пользователя shevgeny
shevgeny 1 год назад

Если вы что-то знаете, это не значит, что это знают все. Именно поэтому я сюда обращаюсь.

Аватар пользователя postgres
postgres 1 год назад

Во первый - что значит "открыт"? какие машинные признаки отличают открытый товар от неоткрытого? По нему кликнули перед этим? Что изменилось после клика? URL? class? был callback ajax?

Если в вашем случае открытый товар - это тот чей id указан в url, то тогда вы можете "переписать результат" любого поля во views с примененим php-filter.
В поле global php вам надо сделать сравнение текущего id товара и аргумента url.
Еще один пример того, когда php-filter приносит пользу: а если обобщить - php-filter является самым удобным средством обработки данных перед передачей в шаблоны вывода.

Иначе задача решается так: сначала вы выводите только выбранный товар, прикрепляя к выводу класс "active", затем вы выводите все другие товары, без этого класса. Можно создать для этого два дисплея. Затем в третьем дисплее вы можете соеденить эти два вывода вместе.

Решение с переносом логики в template - так же вне закона, как и применение php-filter, но по другим религиозным соображениям.

Аватар пользователя gun_dose
gun_dose 1 год назад

Вар дамп действительно не позволяет религия. dpm() нужно по канонам

Аватар пользователя BatKor
BatKor 1 год назад

http://savepic.ru/12672736.png
Как вариант поиграйте с этим? Значение вал это товар а не дисплей товара, наверно вы поняли

Аватар пользователя dgastudio
dgastudio 1 год назад

1 вариант, через jquery. цепляйтесь к существующим классам и добавляйте нужные куда нужно, потом, стили.
2. темизация, добавляйте в body класс текущего продукта, в списке тоже самое, и темизируйте на свое усмотрение

Аватар пользователя shevgeny
shevgeny 1 год назад

пока сделал как раз через jQuery, но хотелось более кошерным способом)

Аватар пользователя dgastudio
dgastudio 1 год назад

он описан в пункте 2. готовых инструкций, кроме как отсылать к темизации/шаблонизации, увы, не могу