Вход • Регистрация

Пересчет итоговых значений корзины в нескольких местах.

  • 06 февраля 2015 г.
  • Добрый день, диафановцы!
    В корзине всё выводится и пересчитывается сразу как нужно при изменении количества товаров и при выборе способов доставки и т.д. Тут всё ОК.

    Мне нужно в нескольких местах еще выводить Итоговое количество товаров и итоговую сумму. Вывожу эти значения с помощью
    Код
    $result["summ"] и $result["summ"]


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

    Вопрос - как сделать, чтобы и в отдельных местах где вывожу итоговые значения тоже они изменялись?
    • 06 февраля 2015 г.
    • там надо вместе с классами в который обернуто выводить
      • 08 февраля 2015 г.
      • не понятен вопрос - меняете в корзине и надо чтобы на странице менялось, так?
  • 08 февраля 2015 г. , редакция: 08 февраля 2015 г.
  • Не давно интересовал этот же вопрос.

    Нарыл только то что если нужна еще одна корзина на странице, то ей нужно назначить другой id.
    По умолчанию id для работы корзины show_cart
    Файл: modules/cart/views/cart.view.show_block.php
    Код

    echo '<span id="show_cart" class="js_show_cart">'.$this->get('info', 'cart', $result).'</span>';


    Нашел что за работу этого id отвечает файл modules/shop/shop.action.php
    Кусок кода:
    Код

    Custom::inc('modules/cart/cart.model.php');
    $model = new Cart_model($this->diafan);
    $cart_tpl = $model->show_block();
    $this->result["data"] = array("#show_cart" => $this->diafan->_tpl->get('info', 'cart', $cart_tpl));


    У меня получилось добиться работы двух корзин одновременно на одной странице.
    Добавив 2 новыx view файла в папке modules/cart/views
    cart.view.show_block_item.php и cart.view.info_item.php. и прописав в файле отвечающему за вывод корзины id "#show_cart2"

    Файл 1: cart.view.show_block_item.php
    Код

    echo '<span id="show_cart2" class="js_show_cart">'.$this->get('info_item', 'cart', $result).'</span>';


    Файл 2 отвечает за вывод данных внутри корзины, там я особо ничего не менял.

    После чего вернулся к файлу modules/shop/shop.action.php
    И добавил в кусок кода id

    Код

    Custom::inc('modules/cart/cart.model.php');
    $model = new Cart_model($this->diafan);
    $cart_tpl = $model->show_block();
    $this->result["data"] = array("#show_cart, #show_cart2" => $this->diafan->_tpl->get('info', 'cart', $cart_tpl));


    Работать то работает, но не должным образом.
    Имеется страница карточки товара и на ней в шапке сайта расположены корзина и в самой карточке товара рядом с ценной вторая корзина которая выводит сумму заказа.

    При клике на кнопку "Купить" стандартная корзина которая выводиться через файлы cart.view.show_block.php и cart.view.info.php
    Берет оформление от второй корзины которую я добавил. (То есть меняется дизайн)

    Проблема как я понял в переменной info которые находятся в файлах:

    Файл: modules/shop/shop.action.php
    Код

    Custom::inc('modules/cart/cart.model.php');
    $model = new Cart_model($this->diafan);
    $cart_tpl = $model->show_block();
    $this->result["data"] = array("#show_cart" => $this->diafan->_tpl->get('info', 'cart', $cart_tpl));


    И файл modules/cart/cart.view.show_block.php
    Код

    echo '<span id="show_cart" class="js_show_cart">'.$this->get('info', 'cart', $result).'</span>';


    Эта переменная отвечает за подключенный файл modules/cart/cart.view.info.php который выводит содержание корзины (Цену, форму)
    Как написано выше я создал для новой корзины 2 view файла, в которой переменная info называлась info_item
    ----
    Так как я не гуру в программировании, я оставил файлы 2-ой корзины и вывел ее в карточке товара через
    Код
    <insert name="show_block" module="cart" template="item">
    и оформил красиво, а что бы посетитель мог узнать цену, рядом сделал кнопочку "Рассчитать стоимость" при клике на которую происходит перезагрузка страницы.
    ----
    Я бы тоже не прочь узнать как можно вывести вторую корзину на странице сайта без перезагрузки страницы.
    • 09 февраля 2015 г.
    • еще есть в 74 строке файла cart.action.php

      Код

      /**
      * Пересчет суммы заказа
      *
      * @return void
      */
      public function recalc()
      {

      ....

      "#show_cart" => $this->diafan->_tpl->get('info', 'cart', $block),
  • 24 мая 2017 г.
  • У кого нибудь есть решение для текущей версии, то что тут написано как то не работает.
  • 27 мая 2017 г. , редакция: 25 января 2019 г.
  • В общем в итоге разобрался сам.
    Если кому интересно то сделал так:
    В файле shop.action.php
    Добавляем в 132 строке в массив вторую корзину

    Цитата
    $this->result["data"] = array(
    "#show_cart" => $this->diafan->_tpl->get('info', 'cart', $cart_tpl),
    "#show_cart2" => $this->diafan->_tpl->get('info_fix', 'cart', $cart_tpl)
    );


    Если шаблон info у вас один и тот же, то можно сделать просто вот так:
    Цитата
    $this->result["data"] = array(
    "#show_cart, #show_cart2" => $this->diafan->_tpl->get('info', 'cart', $cart_tpl),
    );

    То есть добавить id второй корзины через запятую.
    • 27 мая 2017 г.
    • Теперь, наверно стало понятно, почему то, что было написано ранее - было не верным :)
      Успехов.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум