Решил на сайте сделать корзину в сплывающем окне.
Прежде всего хочу сказать спасибо Splash за помощь по выковыриванию данных из корзины.
И за отличный модуль UC JS CART который очень был кстати.
Были использованы модули
uc ajax cart для добавления динамической корзины,
colorbox для попап окон, uc js cart для динамического подсчета товара, ну и немного допилены tpl и css.
Итак первое это uc ajax cart. В нем есть папка с тимплейтами, немного правим .tpl для реализации внешнего вида и некоторого функционала.
Сюда же добавим скрытый div с содержимым корзины и ссылку colorbox для показа этого содержимого в попап окне.
У меня это так:
<a href="?width=850&height=auto&inline=true#cartOpen" class="colorbox-inline">В корзине <? $a = count(uc_cart_get_contents()); echo $a.' товар'.numberProduct($a, array('','а','ов')); ?></a> <div class="price-of-cart">на <strong><?php print $total ;?></strong></div> <div id="myCart" style="display:none;"> <div id="cartOpen"> <h2 class="cart_header">Корзина</h2> <?php print ubercart_popup(); ?> </div> </div>
По внешнему виду так:

Там еще функция для склонения товар, товары, товаров есть:
<?php function numberProduct($number, $titles) { $cases = array (2, 0, 1, 1, 1, 2); return $titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; } ?>
Далее как вы увидели в шаблоне есть вывод содержимого корзины <?php print ubercart_popup(); ?>
Это и есть функция которая выдирает содержимое корзины писать её нужно в template.php
Выглядит она так:
function ubercart_popup() { if (module_exists('uc_cart')) { $items = uc_cart_get_contents(); if (empty($items)) { return theme('uc_empty_cart'); } $output = ''; foreach (uc_cart_cart_pane_list($items) as $pane) { if ($pane['enabled']) { $output .= $pane['body']; } } return '<div id = "uc_popup">'. $output .'</div>'; } }
В общем содержимое уже выводится в попапе, только вот есть несколько моментов. Это не срабатывает яваскрипт для обновления позиций товара из модуля uc ajax cart(как решить не знаю). По этому поводу я отключил в настройках модуля фитчу “Ajaxify cart page”.
Далее установите модуль uc js cart – как раз он и позволяет динамически подсчитывать стоимость.
Вот практически и все. Остальное можно сделать средствами css.
Осталось одно, когда мы открываем корзину и добавляем или уменьшаем количество позиций, в самом блоке корзины при закрыти попап окна нихера не меняется. Скорее всего нужно дописать кусок яваскрипт кода для обновления.(займусь позже)
У меня это выглядит вот так все:

Если кто то из читателей решал этот воброс более изящно, корректно, быстро и еще как нить иначе расскажите плиз.
Всем спасибоу!
Источник: http://www.drupal.ru/node/69695
Добавить комментарий к записи "Корзина Ubercart в popup окне"
Чтобы комментировать, необходимо войти в систему.