Михаил

Михаил

С нами с 08 марта 2013; Место в рейтинге пользователей: #18
21 февраля 2018, 15:51
+1
{$_modx->resource.tv_name|fromJSON}
21 февраля 2018, 13:08
0
Еще не дошел до него. Но первый в списке среди улучшений дополнений
19 февраля 2018, 18:57
0
Как понять в ручную? Просто зайти в mSearch2 и обновить индексы и все.
19 февраля 2018, 18:56
+1
Вот таблица, которая связывает товар и опцию. Проверяй id ресурса и ключ опции. Если есть, тогда проверяй на наличии в options
19 февраля 2018, 18:44
+1
Сделай
print_r($options);
Посмотри что там за размер отвечает, и если его нет то
$modx->event->output('Необходимо выбрать размер');
19 февраля 2018, 15:44
+1
Ну в правильном направлении. По идее тут Вы можете делать все что угодно.
19 февраля 2018, 15:09
+1
Поэтому лучше через плагин, там уже все можно проверить
19 февраля 2018, 13:37
+1
А в чем собственно проблема?
Документация

Сделать плагин, который будет проверять, что прилетело и не добавлять если чего то нет
17 февраля 2018, 20:11
0
Вот так как то читабельнее
?php
switch ($modx->event->name) {
case 'msOnBeforeAddToCart': case 'msOnAddToCart': case 'msOnChangeInCart': // Обрабатывать только события добавления в корзину и изменения количества
$cartArray = $cart->get(); // Массив корзины
$cartStatus = $cart->status(); // Состояние корзины
foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
$count = $cartProduct['count'];
if ($count >0 && $product->get('sod')>0){
$tv = $product->get('price') * $product->get('sod');
$pr = $tv;
}
}
else{
if ($count >0 && $product->get('sod')>0){
$tv = $product->get('price') * $product->get('sod');
$pr = $tv;
}
$product->set('price', $pr);
}
}
$cart->set($cartArray); // Запись нового состояния корзины
break;
}
17 февраля 2018, 14:13
0
Да на скорую руку написал, запарился)
17 февраля 2018, 07:58
1
+1
Пример
Давайте подключим свой класс заказа и переопределим в нём проверку email.

Создаём и подключаем свой расширяющий класс. Затем пишем в нём
<?php
class myOrderHandler extends msOrderHandler {
}
Это мы унаследовали оригинальный класс оформления заказа.
Теперь указываем новый класс myOrderHandler в системной настройке ms2_order_handler_class. Если что то пойдёт не так, то всегда можно вернуть старый класс.
После этого ms2 уже использует ваш класс для работы, а тот, в свою очередь наследует свои методы от стандартного.

Теперь мы можем изменить любой метод создания заказа, чем и пользуемся — меняем msOrderHandler::validate().
<?php
class myOrderHandler extends msOrderHandler {
public function validate($key, $value) {
    switch ($key) {
        case 'email':
            // меняем filter_var() на простую регулярку
            // $value = filter_var($value, FILTER_VALIDATE_EMAIL) ? $value : @$this->order[$key];
            $value = preg_match('/.+@.+\..+/i', $value) ? trim($value) : @$this->order[$key];
        break;
        // Конечно, также можно переопределить и другие валидаторы

        // Если прислано поле, которого тут нет - отправляем в дефолтный класс
        default:
            return parent::validate($key, $value);
    }
    if ($value === false) {
        $value = '';
    }

    return $value;
}
}
Вот и всё. Мы унаследовали метод и изменили проверку email. Точно также мы можем добавить\изменить проверку и других полей, или вообще полностью поменять весь ход оформления заказа.

Вот и все что Вам надо
16 февраля 2018, 20:42
0
очень подробно описано в документации
14 февраля 2018, 13:26
0
Вроде у них ширину можно указать
12 февраля 2018, 16:48
0
Руководства не встречал. Может просто не искал. Кажется легче перенести логику работы. Ну практически как с нуля написать.
12 февраля 2018, 16:44
0
Я серьезно. Перенес уже не один с Шопкипера. Писал скрипты переноса с ТВ в опции, в галерею переносил картинки и так далее. Кнопки «makepizdato» реально нет. Придется руками переносить
12 февраля 2018, 16:38
1
+1
Да, руки программистов.
12 февраля 2018, 07:35
0
очень сильно Вам может помочь Gitify. Я использую в принципе все норм. Gitify
10 февраля 2018, 20:28
0
Попробуй так
switch ($modx->event->name) {
    case "OnLoadWebDocument":{
        $my_tv = $modx->resource->getTVValue('test2');
        $my_tv->setTVValue('test2', (int)$my_tv + 5);
    }
}