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

Аватар пользователя shevgeny shevgeny 20 января 2017 в 12:13

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

0 Thanks

Комментарии

Аватар пользователя shevgeny shevgeny 21 января 2017 в 18:19

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

Аватар пользователя gun_dose gun_dose 21 января 2017 в 20:04

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

Аватар пользователя shevgeny shevgeny 21 января 2017 в 20:07

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

Аватар пользователя gun_dose gun_dose 21 января 2017 в 20:24

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

Аватар пользователя gun_dose gun_dose 21 января 2017 в 20:37

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

Аватар пользователя shevgeny shevgeny 21 января 2017 в 20:40

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

Аватар пользователя shevgeny shevgeny 21 января 2017 в 20:54

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

Аватар пользователя shevgeny shevgeny 21 января 2017 в 20:58

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

Аватар пользователя Mihail.space Mihail.space 21 января 2017 в 20:11

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

Аватар пользователя shevgeny shevgeny 21 января 2017 в 20:22

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

Аватар пользователя shevgeny shevgeny 22 января 2017 в 11:36

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

Аватар пользователя postgres postgres 22 января 2017 в 14:55

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

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

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

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

Аватар пользователя BatKor BatKor 22 января 2017 в 14:59

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

Аватар пользователя dgastudio dgastudio 23 января 2017 в 10:02

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

Аватар пользователя dgastudio dgastudio 23 января 2017 в 10:15

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