Создание сайтов и приложений в Минске

разработка сайтов и приложений

Изменение цены в minishop2 при добавлении в корзинуновая цена товара

Изменение цены в minishop2 при добавлении в корзину

Опубликовано: понедельник, 2 февраль 2015
Изменение цены в minishop2 при добавлении в корзину

Часто при разработке интернет-магазина возникает ситуация, когда некоторые товары надо положить в корзину с отличной от первоначальной цене. Давайте рассмотрим, как это сделать, используя для организации магазина на MODX Revo модуль minishop2 (ms2). Добавление товаров в корзину при использовании этого приложения происходит аяксом при указании у формы класса ms2_form. Внутри которой указываются параметры id товара и его количество (count). Изменить цену, указав, допустим, дополнительно параметр price не удастся.

Настройка ms2 для использования произвольной цены при добавлении в корзину.

Для переопределения цены товара при добавлении в корзину модуль ms2 использует специальный сниппет. Указать имя которого нужно в системных параметрах приложения. А именно создать параметр по имени ms2_price_snippet. Сниппет должен возвращать цену товара. В нём доступны все параметры, которые были переданы в форме. Допустим, мы указали, что новая цена будет в параметре "price", создав в форме поле <input type="hidden" name="price" value="123"/>. Тогда код сниппета, который обрабатывает добавление новой цены, будет следующим:

if (isset($_REQUEST['price']) && !empty($_REQUEST['price']) ){
    return intval($_REQUEST['price']);
}
return $product->get('price');

Важно

Сниппет модификатора цены применяется не только перед добавлением в корзину. Он также применяется при отображении товаров через сниппет msProduct. Так что надо быть осторожнее с использованием одноименных параметров. А лучше повесить дополнительный флаг в плагине перед добавлением в корзину.

PS: Обратите внимание, что изменить цену в ms2 при использовании плагина, отслеживающего событие msOnBeforeAddToCart не получится! В нём можно изменить всё, кроме цены и веса! Для цены и веса нужно создавать и прописывать в настройках отдельные сниппеты!

PS: PS: Если что-то не понятно, пишите вопросы в комментарии!

Поделиться в соцсетях: