Обязательные поля товара при добавлении в корзину minishop2

Обязательные поля товара при добавлении в корзину 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
"Необходимо выбрать размер" на "Укажите рост"

Вот и всё! Успехов в создании интернет-магазина.

Если вы не видите кнопку "Скачать"
отключите блокировщик рекламы

Комментарии ()

  1. Сергей 08 декабря 2022, 15:52 # 0
    Добрый день, Байгузин! что то сделал как туут расписано но в итоге ничего не сработало((( Помоги пожалуйста!
    1. Сергей 08 декабря 2022, 15:53 # 0
      пробовал и так
      if (!empty($arr) && empty($sizename))
      и все ровно не работать(((

      Не то, что искали? Воспользуйтесь поиском