Добавление в корзину из лайтбокса - вопрос

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

Аватар пользователя Andruxa Andruxa 4 августа 2011 в 18:45

Решил заменить стандарные уберкартовские атрибуты на решение, описанное в этом топике

Вкратце - каждому набору атрибутов создается своя нода-товар с cck-полями - атрибутами,
Ноды-товары объединяются нодой-заголовком товара через нодрефренс, на странице ноды-заголовка список товаров выводится прикрепленным вьюсом, табличный вид:
фото товара, его заголовок, цена, кнопка добавления в корзину
Во вьюсе сделаны expoised filters, с помощью которых можно отфильтровать ноды-товары по их cck-полям - атрибутам.
С помощью Filters Auto-submit фильтрация происходит без перезагрузки страницы.
C помощью Ajax Driven Cart добавление в корзину и обновление блока корзины также происходит без перезагрузки страницы.

С этим все понятно.

Теперь возникло желание воспризвести функционал стандартного каталога уберкарта - если у товара есть атрибуты, при нажатии на кнопку добавления в корзину, покупателя просят выбрать атрибуты для товара.
Для этого в представлении, выводящим список товаров (это представление прикреплено к странице товара-заголовка) делаю вид "Страница", путь - selectproduct/%, где % - nid ноды-заголовка товара

В представлении, формирующем страницу каталога, для нод-заголовков товара создаю поле с ссылкой вида <a href='selectproduct/[nid]/lightbox2' rel='lightframe' title='blabla'>Добавить в корзину</a>

Соответственно, по клику на эту ссылку лайтбокс выводит iframe с представлением-списком товаров
(в page-selectproduct-lightbox2.tpl.php убираю ненужные регионы, оставляя <head> с загрузкой скриптов)

Теперь вопрос:
при нажатии кнопки добавления в корзину из фрейма, товар добавляется, но на странице каталога обновление блока корзины не происходит, что в общем-то, неудивительно.
Как реализовать:
1. Закрытие фрейма после отработки скрипта добавления в корзину (он используется и на других страницах без фреймов)
2. Обновление блока корзины после закрытия фрейма

Я так понимаю, что скрипт из Ajax Driven Cart должен отправить в лайтбокс событие, приводящее к закрытию фрейма, а лайтбокс, в свою очередь - отправить странице событие на обновление блока корзины.

Второй вариант: в ссылке "Добавить в корзину" указывать rel='lightmodal', тогда лайтбокс выводит вьюху без фрейма, но и без скриптов от Filters Auto-submit и Ajax Driven Cart.
Вернее - скрипты Ajax Driven Cart уже есть на странице, просто кнопки добавления в корзину, которые выводятся в представлении, ими не проинициализированы, а скрипты Filters Auto-submit надо подгружать, причем делать это только в случае, когда представление выводится лайтбоксом, - когда оно выводится на странице товара-заголовка, эти скрипты автоматом добавляются, и грузить их второй раз не стоит.

Первый вариант, мне кажется, реализовать будет проще.

Комментарии