Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Сайт на DIAFAN.CMS Интеграция дизайна Пересчет итоговых значений корзины в нескольких местах.


Максим (web-prosto) 2206 февраля 2015 г.

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

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


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

Вопрос - как сделать, чтобы и в отдельных местах где вывожу итоговые значения тоже они изменялись?

Александр Биг Эпл (ba5) 8306 февраля 2015 г.

там надо вместе с классами в который обернуто выводить

Анатолий (liniapro) 4908 февраля 2015 г.

не понятен вопрос - меняете в корзине и надо чтобы на странице менялось, так?

Евгений (artdeg) 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">
и оформил красиво, а что бы посетитель мог узнать цену, рядом сделал кнопочку "Рассчитать стоимость" при клике на которую происходит перезагрузка страницы.
----
Я бы тоже не прочь узнать как можно вывести вторую корзину на странице сайта без перезагрузки страницы.

Александр Биг Эпл (ba5) 8309 февраля 2015 г.

еще есть в 74 строке файла cart.action.php

Код

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

....

Показать весь код

"#show_cart" => $this->diafan->_tpl->get('info', 'cart', $block),

Dmitry (weissfl) 12824 мая 2017 г.

У кого нибудь есть решение для текущей версии, то что тут написано как то не работает.

Виталий NVGPRO (DIAFAN.CMS) 32624 мая 2017 г.

А что, то что выше написано Вы считали правильным? :)

Dmitry (weissfl) 12827 мая 2017 г., редакция 25 января, пятница

В общем в итоге разобрался сам.
Если кому интересно то сделал так:
В файле 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 второй корзины через запятую.
Спасибо сказали: Александр (LidStudio)

Виталий NVGPRO (DIAFAN.CMS) 32627 мая 2017 г.

Теперь, наверно стало понятно, почему то, что было написано ранее - было не верным :)
Успехов.