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


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

Показать скидку в корзине в валюте сайта

скидка

Лучший Ответ Cheren-dow , 16 September 2015 - 11:09

Tunga, выложил решение в маркетплейсе, можете скачать и перезалить на свой сайт с заменой файлы. 

Перейти к сообщению


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

#1 Tunga

Tunga

Отправлено 07 September 2015 - 18:30

Помогите поправить шаблон корзины чтобы вывести скидку в процентах и валюте сайта.

Использую элемент Скидка, начиная с определенной суммы // JBMarketplace

 

Сейчас в корзине выводится скидка в процентах, а нужно показать и в процентах и валюте сайта

 

Сейчас так e874090a_s.jpg

 

А нужно вывести так a6b28d3c_s.jpg

 

Хотелось бы конечно такие изменения увидеть сразу из коробки в элементе Скидка, начиная с определенной суммы // JBMarketplace


Сообщение отредактировал Tunga: 07 September 2015 - 18:37

  • 0

JBZoo это круто!


#2 Cheren-dow

Cheren-dow

Отправлено 09 September 2015 - 14:02

Tunga, здравствуйте, вам необходимо сделать следующее:

1. Откройте файл:

\media\zoo\applications\jbuniversal\cart-elements\modifierorderprice\mydiscount\mydiscount.php

И добавьте после метода getRate новый метод renderSubmission с содержимым:

    /**
     * @param array $params
     * @return null|string
     */
    public function renderSubmission($params = array())
    {
        $rate     = $this->getRate();
        $total    = $this->getOrder()->getTotalForItems()->getClone();
        $discount = $total->getClone()->add($rate);

        if ($layout = $this->getLayout('submission.php')) {
            return self::renderLayout($layout, array(
                'rate'     => $rate,
                'total'    => $total,
                'discount' => $discount,
            ));
        }

        return null;
    }

Далее создайте файл стилей  mydiscount.less и шаблон submission.php как показано на скриншоте(в соответствующих папках)

usxh_200x0.png

Теперь откройте шаблон  submission.php и вставьте следующий код:

<?php

/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Sergey Kalistratov <kalistratov.s.m@gmail.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');


$this->app->jbassets->js('cart-elements:modifierorderprice/mydiscount/assets/less/mydiscount.js');

?>

<div class="my-discount">
    <div class="my-discount-rate-price">
        <?php echo $rate->negative()->html(); ?>
    </div>
    <div class="my-discount-total-price">
        <?php echo $discount->html(); ?>
    </div>
    <div class="my-discount-price">
        <?php echo $total->minus($discount)->negative()->html(); ?>
    </div>
</div>

А в файл mydiscount.less стилей добавьте:

//
// JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
// @package     jbzoo
// @version     2.x Pro
// @author      JBZoo App http://jbzoo.com
// @copyright   Copyright (C) JBZoo.com,  All rights reserved.
// @license     http://jbzoo.com/license-pro.php JBZoo Licence
// @coder       Sergey Kalistratov <kalistratov.s.m@gmail.com>
//

@import "jbzoo.less";


.my-discount {
    font-weight: bold;
    .clearfix();

    .jbcurrency-value {
        //color: #51c034;
    }

    &-total-price,
    &-rate-price {
        float: left;
        margin-right: 20px;
    }

    &-price {
        float: right;
    }

}

В результате в корзине должна отображатся следующая информация:

mk8f_200x0.png

 

Нужный вывод можете осуществить в шаблоне, а стили дописать в файле стилей.


  • 2
Изображение
 

#3 Tunga

Tunga

Отправлено 10 September 2015 - 06:43

Понял сейчас заделаем)


Сообщение отредактировал Tunga: 10 September 2015 - 10:45

  • 0

JBZoo это круто!


#4 Tunga

Tunga

Отправлено 10 September 2015 - 10:44

Почти все получилось но скидка считается только после обновления страницы в браузере.

Зайдите на сайт http://bebis.com.ua/ добавьте любой товар в корзину, перейдите на страницу оформления заказа и знаком + увеличьте количество товара до суммы свыше 2000 грн, скидка не пересчитается, но если обновить страницу в браузере тогда пересчитается. Как сделать чтобы скидка пересчитывалась сразу без перезагрузки страницы?


Сообщение отредактировал Tunga: 15 September 2015 - 07:42

  • 0

JBZoo это круто!


#5 Cheren-dow

Cheren-dow

Отправлено 14 September 2015 - 09:10

Tunga, здравствуйте, откройте файл:

\media\zoo\applications\jbuniversal\cart-elements\modifierorderprice\mydiscount\tmpl\submission.php

И замените код на:

<?php

/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Sergey Kalistratov <kalistratov.s.m@gmail.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');


$uniq = $this->app->jbstring->getId('mydiscount-');

echo $this->app->jbassets->widget('#' . $uniq, 'JBZooMyDiscount', array(), true);
?>

<div id="<?php echo $uniq; ?>" class="my-discount">
    <div class="my-discount-rate-price jsMoneyWrap">
        <?php echo $rate->negative()->html(); ?>
    </div>
    <div class="my-discount-price">
        <?php echo $total->minus($discount)->negative()->html(); ?>
    </div>
</div>

Теперь создайте файл mydiscount.js в папке

\media\zoo\applications\jbuniversal\cart-elements\modifierorderprice\mydiscount\assets\js\mydiscount.js

И вставьте следующий код:

/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 */

;
(function ($, window, document, undefined) {

    /**
     * DiscountCode widget
     */
    JBZoo.widget('JBZoo.MyDiscount', {
        'interval': 100
    }, {

        init : function(){
            var $this = this;
            setInterval(function () {
                $this.onInterval()
            }, this.options.interval);
        },

        onInterval : function() {
            var totalPrice    = $('.jsTotalPrice .jsMoney').data('JBZooMoney').value;
            var procent       = this.$('.jsMoneyWrap .jsMoney').data('JBZooMoney').value;
            var discountPrice = totalPrice / procent;

            this.$('.my-discount-price .jsMoney').JBZooMoney('setValue', discountPrice);
        }

    });

})(jQuery, window, document);


  • 0
Изображение
 

#6 Tunga

Tunga

Отправлено 14 September 2015 - 17:03

Все сделал как Вы сказали, не работает)


  • 0

JBZoo это круто!


#7 Cheren-dow

Cheren-dow

Отправлено 15 September 2015 - 08:55

Все сделал как Вы сказали, не работает)

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


  • 0
Изображение
 

#8 Tunga

Tunga

Отправлено 15 September 2015 - 09:35

Я правильно добавил метод renderSubmission в файл mydiscount.php, полный код файла такой:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * Class JBCartElementModifierOrderPriceMydiscount
 */
class JBCartElementModifierOrderPriceMydiscount extends JBCartElementModifierOrderPrice
{
    /**
     * @return JBCartValue
     */
    public function getRate()
    {
        $orderSum = $this->_order->getTotalForItems(); // получили сумму за все товары (без доставки и прочего)
        $discount = 0;

        if ($orderSum->compare($this->config->get('limit', 1000), '>=')) { // сравниваем c 2000 рублей
            $discount = $this->config->get('rate', 0);
        }

        return $this->_order->val($discount)->negative(); // обязательно вернуть объект, добавляем знак минус (чтобы была скидка)
    }
	    /**
     * @param array $params
     * @return null|string
     */
    public function renderSubmission($params = array())
    {
        $rate     = $this->getRate();
        $total    = $this->getOrder()->getTotalForItems()->getClone();
        $discount = $total->getClone()->add($rate);

        if ($layout = $this->getLayout('submission.php')) {
            return self::renderLayout($layout, array(
                'rate'     => $rate,
                'total'    => $total,
                'discount' => $discount,
            ));
        }

        return null;
    }

}


  • 0

JBZoo это круто!


#9 Cheren-dow

Cheren-dow

Отправлено 16 September 2015 - 11:09   Лучший Ответ

Tunga, выложил решение в маркетплейсе, можете скачать и перезалить на свой сайт с заменой файлы. 


  • 0
Изображение
 

#10 Tunga

Tunga

Отправлено 16 September 2015 - 14:59

Нет не работает этот код, скачал с маркетплейса и установил, скидка не пересчитывается.

 

Сейчас я установил для теста скидку -5% на все заказы от 100грн. значит любой товар будет со скидкой)

 

Зайдите в магазин http://bebis.com.ua/добавьте любой товар в корзину, перейдите на страницу оформления заказа и знаком + измените количество товара в корзине.

 

Общая сумма заказа пересчитается, а скидка не пересчитается! - (без перезагрузки страницы)

 

8ebe1de5_s.jpg


Сообщение отредактировал Tunga: 16 September 2015 - 15:02

  • 0

JBZoo это круто!






Темы с аналогичным тегами скидка

Click to return to top of page in style!