This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
private:koding:hostcms:modules:shop:cart:markup [23.01.17 в 15:07] maximzasorin_gmail.com |
private:koding:hostcms:modules:shop:cart:markup [29.06.17 в 15:42] (current) Артем Куц ↷ Операцией перемещения обновлены ссылки |
||
---|---|---|---|
Line 6: | Line 6: | ||
Для реализации подобного механизма можно использовать данное решение. | Для реализации подобного механизма можно использовать данное решение. | ||
+ | |||
+ | Стандартного механизма для хранения наценки по каждому товару в корзине и заказе не предусмотрено, поэтому необходимо придумать механизм хранения этой информации. Изначально, когда заказ еще не создан будем хранить информацию о наценках в сессии, когда пользователь оформит заказ эта информация запишется в доп. свойство заказа и с помощью наблюдателей будет прикрепляться к товарам заказа. Цена товаров, для которых будет выбрана наценка, будет подменятся с помощью наблюдателя при выводе корзины, будут учитываться данные сессии или данные из доп. свойства заказа. | ||
===== Константы ===== | ===== Константы ===== | ||
Line 30: | Line 32: | ||
==== Наблюдатель для вывода наценки в заказе и ЦА (1) ==== | ==== Наблюдатель для вывода наценки в заказе и ЦА (1) ==== | ||
- | * Загружаем файл: [[private:koding:hostcms:shop:cart:markup:additionalfields.php|/modules/shop/order/item/observer/additionalfields.php]] | + | * Загружаем файл: [[private:koding:hostcms:modules:shop:cart:markup:additionalfields.php|/modules/shop/order/item/observer/additionalfields.php]] |
* Добавляем в bootstrap.php:<code php>Core_Event::attach('shop_order_item.onCallmarkup', array('Shop_Order_Item_Observer_AdditionalFields', 'onCallmarkup'));</code> | * Добавляем в bootstrap.php:<code php>Core_Event::attach('shop_order_item.onCallmarkup', array('Shop_Order_Item_Observer_AdditionalFields', 'onCallmarkup'));</code> | ||
==== Наблюдатель для подмены цены товара (2) ==== | ==== Наблюдатель для подмены цены товара (2) ==== | ||
- | Загружаем файл: [[private:koding:hostcms:shop:cart:markup:addmarkuptoprice.php|/modules/shop/item/controller/observer/addmarkuptoprice.php]] | + | Загружаем файл: [[private:koding:hostcms:modules:shop:cart:markup:addmarkuptoprice.php|/modules/shop/item/controller/observer/addmarkuptoprice.php]] |
==== Наблюдатель для прикрепления наценки к корзине (3) ==== | ==== Наблюдатель для прикрепления наценки к корзине (3) ==== | ||
- | Загружаем файл: [[private:koding:hostcms:shop:cart:markup:attachmarkup.php|/modules/shop/cart/controller/show/observer/attachmarkup.php]] | + | Загружаем файл: [[private:koding:hostcms:modules:shop:cart:markup:attachmarkup.php|/modules/shop/cart/controller/show/observer/attachmarkup.php]] |
===== Формы центра администрирования ===== | ===== Формы центра администрирования ===== | ||
Line 48: | Line 50: | ||
{{:private:koding:hostcms:shop:cart:pasted:20170123-150540.png}} | {{:private:koding:hostcms:shop:cart:pasted:20170123-150540.png}} | ||
+ | |||
+ | * Необходимо обратить внимание, что стоимость товара здесь выводится с учетом наценки, а наценка выступает в качестве информационного поля. Для вывода цены без наценки можно использовать метод ''Shop_Order_Item_Observer_AdditionalFields::onCallprice_without_markup'', создав аналогично полю ''markup'' поле ''price_without_markup'', а оригинальное поле с ценой из форм ЦА удалить. При этом в карточке товара в заказе все равно будет выводится цена товара с наценкой. | ||
===== ТДС корзины ===== | ===== ТДС корзины ===== | ||
==== Настройки страницы ==== | ==== Настройки страницы ==== | ||
- | - Код вывода краткой корзины обопрачиваем в наблюдатель:<code php> | + | - Код вывода краткой корзины оборачиваем в наблюдатель:<code php> |
Core_Event::attach('Shop_Item_Controller.onAfterCalculatePrice', array('Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice'));</code>После вывода:<code php>Core_Event::detach('Shop_Item_Controller.onAfterCalculatePrice', array(' | Core_Event::attach('Shop_Item_Controller.onAfterCalculatePrice', array('Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice'));</code>После вывода:<code php>Core_Event::detach('Shop_Item_Controller.onAfterCalculatePrice', array(' | ||
Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice'));</code>Должно быть так:<code php>Core_Event::attach('Shop_Item_Controller.onAfterCalculatePrice', array('Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice')); | Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice'));</code>Должно быть так:<code php>Core_Event::attach('Shop_Item_Controller.onAfterCalculatePrice', array('Shop_Item_Controller_Observer_AddMarkupToPrice', 'onAfterCalculatePrice')); |