Перейти к содержимому


Фотография
- - - - -

Кнопка "В корзину"


Лучший Ответ skiF , 10 April 2013 - 09:02

Шаги следующие:
1)media\zoo\applications\jbuniversal\elements\jbprice\jbprice.php

            $item      = $this->getItem();
            $count     = count($params['currency-list']);
            $activeCur = $this->_getActiveCur($params);
            $isInCart  = $this->app->jbcart->isExists($item);
            $modalUrl  = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxModalWindow');
            $rmFromCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxRemoveFromCart');

на
            $item      = $this->getItem();
            $count     = count($params['currency-list']);
            $activeCur = $this->_getActiveCur($params);
            $isInCart  = $this->app->jbcart->isExists($item);
            $modalUrl  = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxModalWindow');
            $rmFromCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxRemoveFromCart');
/*Добавлено добавление в корзину без модального окна */
            $addToCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxAddToCart');
/*Добавлено добавление в корзину без модального окна */

в том же файле:
            if ($layout = $this->getLayout()) {

                $html = self::renderLayout($layout, array(
                    'count'             => $count,
                    'params'            => $params,
                    'activeCur'         => $activeCur,
                    'config'            => $this->config,
                    'currencyList'      => $params->get('currency-list'),
                    'values'            => $this->app->element->applySeparators($params['separated_by'], $result),
                    'isInCart'          => $isInCart,
                    'modalUrl'          => $modalUrl,
                    'removeFromCartUrl' => $rmFromCartUrl,


на

            if ($layout = $this->getLayout()) {

                $html = self::renderLayout($layout, array(
                    'count'             => $count,
                    'params'            => $params,
                    'activeCur'         => $activeCur,
                    'config'            => $this->config,
                    'currencyList'      => $params->get('currency-list'),
                    'values'            => $this->app->element->applySeparators($params['separated_by'], $result),
                    'isInCart'          => $isInCart,
                    'modalUrl'          => $modalUrl,
                    'removeFromCartUrl' => $rmFromCartUrl,
/*Добавлено добавление в корзину без модального окна */
                    'addToCartUrl' 	=> $addToCartUrl,
/*Добавлено добавление в корзину без модального окна */

далее, в файле media\zoo\applications\jbuniversal\elements\jbprice\tmpl\jbprice.php

    <a rel="nofollow" href="<?php echo $modalUrl;?>" class="jsAddToCart add-to-cart"
       title="<?php echo JText::_('JBZOO_CART_ADD');?>"><?php echo JText::_('JBZOO_CART_ADD');?></a>


на
    <a rel="nofollow" href="<?php 
/*Добавлено добавление в корзину без модального окна */
echo $addToCartUrl;
/*Добавлено добавление в корзину без модального окна */

?>" class="jsAddToCartNoModal add-to-cart"
       title="<?php echo JText::_('JBZOO_CART_ADD');?>"><?php echo JText::_('JBZOO_CART_ADD');?></a>


и наконец в файле media\zoo\applications\jbuniversal\assets\js\jquery.jbzooprice.min.js:
добавляем функцию-обработчик клик события:
было:
            $(".jsRemoveFromCart", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('in-cart').addClass('not-in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

стало:
            $(".jsRemoveFromCart", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('in-cart').addClass('not-in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

/*Добавлено добавление в корзину без модального окна */
            $(".jsAddToCartNoModal", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('not-in-cart').addClass('in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

/*Добавлено добавление в корзину без модального окна */


таким образом изменив класс кнопки добавления на jsAddToCartNoModal и обработчик онклик-события получаем добавления товара в корзину без перегрузки. изменив класс обратно, получим обработчик с появлением fancy модального окна. Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 6

#1 igorsaf

igorsaf

Отправлено 08 April 2013 - 06:39

Добрый день!
Подскажите, как реализовать следующий функционал: нужно чтобы по кнопке "В корзину" товар сразу добавлялся в корзину - без всплывающего окна и перезагрузки страницы, а сама конпка заменялась на "Удалить из корзины"

  • 0

#2 IPname

IPname

Отправлено 08 April 2013 - 12:12

В типах -вывод шаблона. выбираете свой требуемый тип и шаблон(фулл тизер и тд)
Шаблон элемента  (JBZoo Price) - нажимаете - выбираете



  • 0
Иной толкает пылесос, который нужен мне едвали, Изжога, перхоть и понос, О Боже, как Вы задолбали. Я не хотел бы Вас ругать, к больным мозгам претензий нету, Но раздается"Вашу мать"тебе в ответ по интернету

#3 IPname

IPname

Отправлено 08 April 2013 - 12:13

это без вспывающего окна... а по поводу перезагрузки страницы это нужно смотреть, или обращаться к "отцам" форума
  • 0
Иной толкает пылесос, который нужен мне едвали, Изжога, перхоть и понос, О Боже, как Вы задолбали. Я не хотел бы Вас ругать, к больным мозгам претензий нету, Но раздается"Вашу мать"тебе в ответ по интернету

#4 igorsaf

igorsaf

Отправлено 10 April 2013 - 05:41

да это то все понятно.
надо чтобы при нажатию на кнопку "добавить в корзину" товар просто добавлялся в корзину - без всплывающего окна, без перехода в корзину, без перезагрузки страницы
  • 0

#5 skiF

skiF

Отправлено 10 April 2013 - 09:02   Лучший Ответ

Шаги следующие:
1)media\zoo\applications\jbuniversal\elements\jbprice\jbprice.php
            $item      = $this->getItem();
            $count     = count($params['currency-list']);
            $activeCur = $this->_getActiveCur($params);
            $isInCart  = $this->app->jbcart->isExists($item);
            $modalUrl  = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxModalWindow');
            $rmFromCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxRemoveFromCart');

на
            $item      = $this->getItem();
            $count     = count($params['currency-list']);
            $activeCur = $this->_getActiveCur($params);
            $isInCart  = $this->app->jbcart->isExists($item);
            $modalUrl  = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxModalWindow');
            $rmFromCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxRemoveFromCart');
/*Добавлено добавление в корзину без модального окна */
            $addToCartUrl = $this->app->jbrouter->element($this->identifier, $item->id, 'ajaxAddToCart');
/*Добавлено добавление в корзину без модального окна */

в том же файле:
            if ($layout = $this->getLayout()) {

                $html = self::renderLayout($layout, array(
                    'count'             => $count,
                    'params'            => $params,
                    'activeCur'         => $activeCur,
                    'config'            => $this->config,
                    'currencyList'      => $params->get('currency-list'),
                    'values'            => $this->app->element->applySeparators($params['separated_by'], $result),
                    'isInCart'          => $isInCart,
                    'modalUrl'          => $modalUrl,
                    'removeFromCartUrl' => $rmFromCartUrl,


на

            if ($layout = $this->getLayout()) {

                $html = self::renderLayout($layout, array(
                    'count'             => $count,
                    'params'            => $params,
                    'activeCur'         => $activeCur,
                    'config'            => $this->config,
                    'currencyList'      => $params->get('currency-list'),
                    'values'            => $this->app->element->applySeparators($params['separated_by'], $result),
                    'isInCart'          => $isInCart,
                    'modalUrl'          => $modalUrl,
                    'removeFromCartUrl' => $rmFromCartUrl,
/*Добавлено добавление в корзину без модального окна */
                    'addToCartUrl' 	=> $addToCartUrl,
/*Добавлено добавление в корзину без модального окна */

далее, в файле media\zoo\applications\jbuniversal\elements\jbprice\tmpl\jbprice.php

    <a rel="nofollow" href="<?php echo $modalUrl;?>" class="jsAddToCart add-to-cart"
       title="<?php echo JText::_('JBZOO_CART_ADD');?>"><?php echo JText::_('JBZOO_CART_ADD');?></a>


на
    <a rel="nofollow" href="<?php 
/*Добавлено добавление в корзину без модального окна */
echo $addToCartUrl;
/*Добавлено добавление в корзину без модального окна */

?>" class="jsAddToCartNoModal add-to-cart"
       title="<?php echo JText::_('JBZOO_CART_ADD');?>"><?php echo JText::_('JBZOO_CART_ADD');?></a>


и наконец в файле media\zoo\applications\jbuniversal\assets\js\jquery.jbzooprice.min.js:
добавляем функцию-обработчик клик события:
было:
            $(".jsRemoveFromCart", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('in-cart').addClass('not-in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

стало:
            $(".jsRemoveFromCart", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('in-cart').addClass('not-in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

/*Добавлено добавление в корзину без модального окна */
            $(".jsAddToCartNoModal", $obj).click(function () {
                var $link = $(this);
                $.post($link.attr("href"), {}, function (data) {
                    $obj.removeClass('not-in-cart').addClass('in-cart');
                    $.fn.JBZooPriceReloadBasket();
                }, "json");
                return false;
            });

/*Добавлено добавление в корзину без модального окна */


таким образом изменив класс кнопки добавления на jsAddToCartNoModal и обработчик онклик-события получаем добавления товара в корзину без перегрузки. изменив класс обратно, получим обработчик с появлением fancy модального окна.
  • 1

#6 igorsaf

igorsaf

Отправлено 10 April 2013 - 09:08

у меня почему то таких строк в файле media\zoo\applications\jbuniversal\elements\jbprice\jbprice.php вообще нет.
это на какой версии jbzoo сделано?
  • 0

#7 skiF

skiF

Отправлено 10 April 2013 - 09:18

JBZoo App
Version 1.6.0 - 2013 01
  • 0




Click to return to top of page in style!