Как работает динамическое ценообразование в Magento?
8
Интересно, как работает динамическое ценообразование в Magento?
Например, я создал продукт в бэкэнде и добавил к нему несколько пользовательских опций. Таким образом, если пользователь выберет опцию, цена автоматически изменится на странице просмотра товара без перезагрузки страницы.
Кто-нибудь может объяснить, как Magento выполняет это действие?
И можем ли мы добавить пользовательские динамические цены? Я хочу, чтобы если пользователь щелкнул ссылку (я добавил на страницу просмотра товара), то цена изменилась.
Расчет цены - очень сложная тема в Magento. Вот с высоты птичьего полета, как это делается для простого продукта:
Magento получает «базовую» цену. Это цена, которую вы определили в столбце цен
«Групповая» цена применяется. Это та часть, где учитывается цена уровня на основе заказанного количества, веб-сайта и группы клиентов.
Специальная цена применяется, если для текущей даты определена специальная цена.
« Catalog_product_get_final_price » событие. Это где ваш пользовательский модуль, который возиться с ценой должен войти. В качестве рабочего примера, модуль CatalogRule ловит это событие и изменяет цену на основе определенных правил каталога
Цены на выбранные варианты принимаются во внимание
Так как этот процесс занимает очень много времени, Magento создает индекс цен и будет проходить через вышеупомянутое только при переиндексации. В индексе цен используется множество таблиц, в которых есть информация об «окончательной» цене (рассчитанной с использованием описанных выше шагов), а также такие вещи, как минимальные / максимальные цены для конфигурируемых и связываемых пакетов. В этой таблице есть запись для каждой комбинации веб-сайта / продукта / группы клиентов, поэтому системе нужно будет только выбрать правильную строку на основе данных клиента, чтобы весь процесс выполнялся в достойное время.
Что касается внешней части, то, как цена динамически увеличивается и уменьшается, все это делается в javascript, который начинается с массива json со всеми «ценовыми уровнями» и будет уменьшать / увеличивать цену в зависимости от вашего выбора.
с помощью события «catalog_product_get_final_price» и setFinalPrice()измените цену на странице просмотра товара и дальнейшие шаги. Но как я могу установить динамическую цену прямо со страницы списка товаров?
Shathish
1
Это делается с помощью Javascript и Ajax, если я правильно понял, он находится в файле js / varien / configurable.js. Если вы хотите изменить поведение этого, вы можете использовать прототипирование для расширения конкретной функции. Я не очень хорошо разбираюсь в javascript, но я думаю, что эта статья Stackoverflow объясняет основы расширения /programming/2686258/javascript-inheritance-extend-function
setFinalPrice()
измените цену на странице просмотра товара и дальнейшие шаги. Но как я могу установить динамическую цену прямо со страницы списка товаров?Это делается с помощью Javascript и Ajax, если я правильно понял, он находится в файле js / varien / configurable.js. Если вы хотите изменить поведение этого, вы можете использовать прототипирование для расширения конкретной функции. Я не очень хорошо разбираюсь в javascript, но я думаю, что эта статья Stackoverflow объясняет основы расширения /programming/2686258/javascript-inheritance-extend-function
источник