Как работает динамическое ценообразование в Magento?

8

Интересно, как работает динамическое ценообразование в Magento?

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

Кто-нибудь может объяснить, как Magento выполняет это действие?

И можем ли мы добавить пользовательские динамические цены? Я хочу, чтобы если пользователь щелкнул ссылку (я добавил на страницу просмотра товара), то цена изменилась.

Wakanina
источник

Ответы:

10

Расчет цены - очень сложная тема в Magento. Вот с высоты птичьего полета, как это делается для простого продукта:

  1. Magento получает «базовую» цену. Это цена, которую вы определили в столбце цен
  2. «Групповая» цена применяется. Это та часть, где учитывается цена уровня на основе заказанного количества, веб-сайта и группы клиентов.
  3. Специальная цена применяется, если для текущей даты определена специальная цена.
  4. « Catalog_product_get_final_price » событие. Это где ваш пользовательский модуль, который возиться с ценой должен войти. В качестве рабочего примера, модуль CatalogRule ловит это событие и изменяет цену на основе определенных правил каталога
  5. Цены на выбранные варианты принимаются во внимание

Так как этот процесс занимает очень много времени, Magento создает индекс цен и будет проходить через вышеупомянутое только при переиндексации. В индексе цен используется множество таблиц, в которых есть информация об «окончательной» цене (рассчитанной с использованием описанных выше шагов), а также такие вещи, как минимальные / максимальные цены для конфигурируемых и связываемых пакетов. В этой таблице есть запись для каждой комбинации веб-сайта / продукта / группы клиентов, поэтому системе нужно будет только выбрать правильную строку на основе данных клиента, чтобы весь процесс выполнялся в достойное время.

Что касается внешней части, то, как цена динамически увеличивается и уменьшается, все это делается в javascript, который начинается с массива json со всеми «ценовыми уровнями» и будет уменьшать / увеличивать цену в зависимости от вашего выбора.

Пол Григорута
источник
Спасибо Полу за ваш ответ. Динамическое ценообразование Magento - сложная тема :)
Wakanina
с помощью события «catalog_product_get_final_price» и setFinalPrice()измените цену на странице просмотра товара и дальнейшие шаги. Но как я могу установить динамическую цену прямо со страницы списка товаров?
Shathish
1

Это делается с помощью Javascript и Ajax, если я правильно понял, он находится в файле js / varien / configurable.js. Если вы хотите изменить поведение этого, вы можете использовать прототипирование для расширения конкретной функции. Я не очень хорошо разбираюсь в javascript, но я думаю, что эта статья Stackoverflow объясняет основы расширения /programming/2686258/javascript-inheritance-extend-function

Сандер Мангель
источник
Спасибо Сандер, это делает это немного ясным :). Кто-нибудь может объяснить более подробно? Это будет ценно для всех.
Ваканина