Обязательные поля товара при добавлении в корзину minishop2
Всем привет. Часто при создании интернет-магазина на Modx Revolution у товара нужно выставить обязательными для выбора поля размера, веса и так далее. То есть, чтобы клиент не мог добавить товар в корзину пока не выберет размер или вес. Встроенной такой функции в minishop2 нет, поэтому нужно писать плагин. Плагин работает как со стандартными полями minishop2 - размер (size), вес (weght), цвет (color); так и с созданными полями msOptions.
Назовём плагин required_size:
<?php
switch ($modx->event->name) {
case 'msOnBeforeAddToCart':
//Доступные переменные - $product, $count, $options, $cart
// Размер, выбранный пользователем
$sizename = $options['size'];
// Все размеры, которые доступны у товара
$arr = $product->get('size');
// Если у товара есть размер, но при этом пользователь не выбрал размер, ругаемся
if(!empty($arr) AND !in_array($sizename, $arr)){
$modx->event->output('Необходимо выбрать размер');
}
break;
}
и вешаем его на событие msOnBeforeAddToCart, поставив галочку на против этого параметра в "Системные события". Если вам нужно сделать еще одно поле обязательным, например, созданное в "Опциях" своё поле "Рост (height)", то просто копируем этот плагин, называем, например required_height
<?php
switch ($modx->event->name) {
case 'msOnBeforeAddToCart':
//Доступные переменные - $product, $count, $options, $cart
// Рост, выбранный пользователем
$heightname = $options['height'];
// Все росты, которые доступны у товара
$arr = $product->get('height');
// Если у товара есть рост, но при этом пользователь не выбрал рост, ругаемся
if(!empty($arr) AND !in_array($heightname, $arr)){
$modx->event->output('Укажите рост');
}
break;
}
Только лишь заменяем:
sizename на heightname
size на height
"Необходимо выбрать размер" на "Укажите рост"
Вот и всё! Успехов в создании интернет-магазина.
Комментарии ()