Ручная сортировка строчек товаров в msCategory не работает

MODX Revolution 2.8.3-pl (traditional)
miniShop2 2.5.0-pl

Столкнулся с тем, что список товаров в категории после нажатия на заголовок столбца для сортировки по цене или названию перестает реагировать на ручной drug and drop, товар тащится, но не остается там, где я его ставлю в списке.

Как победить эту неведомую хрень? Может у кого было подобное.

Заказчику удобно перетаскивать вручную, но при этом если случайно нажать заголовок столбца, надо откатывать базу, чтобы восстановить работоспособность админки
Sergey
07 декабря 2022, 06:27
modx.pro
508
0

На сайте com-stil.com нужно обнаружить и удалить вирус....

Внимание, тревога!

На вашем сайте обнаружены подозрительные файлы.

Сайт s1924
  — www/server/php/files/2b.jpg заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…
  — www/server/php/files/2b (1).jpg заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…
  — www/server/php/files/2b.inc заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…
  — www/server/php/files/2b.phar заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…
  — www/server/php/files/2b.cfm заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…
  — www/server/php/files/2b.jsp заражен ...9:CDEFGHIJSTUVWXYZcdefghijs…

На сайте com-stil.com нужно обнаружить и удалить вирус…
alex
06 декабря 2022, 18:25
modx.pro
483
0

Плагин на событие mSyncOnProductOffers

2 1
Добрый день!
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).

Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)

case 'mSyncOnProductOffers':
		$xml = $modx->getOption('xml', $scriptProperties);
		$field = $modx->getOption('mspr_msync_field', $scriptProperties, 'Количество');
		if ( !is_object($xml) || !isset($xml->$field) ) break;
		$product = $modx->getOption('resource', $scriptProperties);
		$msProductRemains->saveRemains(array_merge($product->get('options')?:array(), array(
			'product_id' => $product->get('id')
			,'count' => (float) $xml->$field
			,'set' => true
		)));
		break;
Нужно что бы при обновлении товара, добавлялось количество в поле remain, сейчас это работает на сохранение товара.

Есть плагин, которые работает при сохранении товара.
<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormSave':
        if ($resource->get('class_key') == 'msProduct') {
                $modx->addPackage('msproductremains', $modx->getOption('msproductremains.core_path',null,$modx->getOption('core_path').'components/msproductremains/').'model/');
                $stock = 0;
                $sql = "SELECT remains FROM {$modx->getTableName('msprRemains')} WHERE product_id = ".$id;
                $query = $modx->prepare($sql);
                $query->execute(array(0));
                $remains = $query->fetchAll(PDO::FETCH_ASSOC);
                foreach ($remains as $remain) {
                    $stock += $remain['remains'];
                }
             // $resource->setTVValue('stock', $stock);
                $resource->set('remain', $stock);
                $resource->save();
            }
        break;
}
Сергей
06 декабря 2022, 14:28
modx.pro
437
0

Плагин на событие mSyncOnProductOffers

Добрый день!
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).

Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)

case 'mSyncOnProductOffers':
		$xml = $modx->getOption('xml', $scriptProperties);
		$field = $modx->getOption('mspr_msync_field', $scriptProperties, 'Количество');
		if ( !is_object($xml) || !isset($xml->$field) ) break;
		$product = $modx->getOption('resource', $scriptProperties);
		$msProductRemains->saveRemains(array_merge($product->get('options')?:array(), array(
			'product_id' => $product->get('id')
			,'count' => (float) $xml->$field
			,'set' => true
		)));
		break;
Нужно что бы при обновлении товара, добавлялось количество в поле remain, сейчас это работает на сохранение товара.

Есть плагин, которые работает при сохранении товара.
<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormSave':
        if ($resource->get('class_key') == 'msProduct') {
                $modx->addPackage('msproductremains', $modx->getOption('msproductremains.core_path',null,$modx->getOption('core_path').'components/msproductremains/').'model/');
                $stock = 0;
                $sql = "SELECT remains FROM {$modx->getTableName('msprRemains')} WHERE product_id = ".$id;
                $query = $modx->prepare($sql);
                $query->execute(array(0));
                $remains = $query->fetchAll(PDO::FETCH_ASSOC);
                foreach ($remains as $remain) {
                    $stock += $remain['remains'];
                }
             // $resource->setTVValue('stock', $stock);
                $resource->set('remain', $stock);
                $resource->save();
            }
        break;
}
Сергей
06 декабря 2022, 13:54
modx.pro
604
0

Кто-нибудь пробовал писать кеширование для mFilter2?

Этот сниппет нужно вызывать некешированным.
Но это потому что стандартный механизм кеша в MODX кеширует слишком… топорно.

Что, если написать свое кеширование, которое будет зависеть от get-параметров? В него будет включена пагинация и примененные фильтры.

Кто-нибудь пробовал? Какие тут подводные камни?

Не хочется потратить несколько часов, а то и дней. И понять, что идея «так себе».
Andry
06 декабря 2022, 00:58
modx.pro
499
0

msfilter2 и скрытие отключенных (disabled) чекбоксов

Добрый всем день.
Есть ли возможность в фильтре скрывать чекбоксы, которые переходят в состояние disabled, после начала фильтрации (изображение 1)?

Попытался скрыть через CSS просто по классу, но вместо отключенных чекбоксов остается пустое место, сдвига выборов не происходит (изображение 2).
Валерий
06 декабря 2022, 00:32
modx.pro
547
0

Возможно ли в сниппете, вызванном из чанка tpl, получить переменные товара, которые устанавливаются при вызове msProducts?

Я вызываю msProducts. В аргументе tpl я указываю чанк. В этом чанке я вызываю сниппет. Как мне в сниппете получить значения, которые msProducts отправил в чанк? Я имею в виду значения конкретного товара (значения опций, pagetitle, longtitle и т.д.).

Их нужно в сниппет самому передавать? Но ведь значений очень много может быть. А еще опции, которые зависят от родителя товара. Просто так все это не передать в сниппет. Тут будут сложности и overhead.

Может, все же есть способы получить данные от msProducts в сниппете, который вызывали в чанке tpl, не передавая их в сниппет явно? Может, в каком-то массиве внутри $modx они содержатся? Или у $modx есть функция для их получения?
Andry
06 декабря 2022, 00:04
modx.pro
484
0

Стоимость доставки, зависящая от суммы заказа и времени доставки

1
Добрый день

Нужно сделать чтобы сумма доставки зависела от выбранного пользователем интервала доставки, а также от общей суммы заказа

Кто возьмется, распишу подробнее
Андрей
05 декабря 2022, 21:58
modx.pro
413
0

Поле из адреса в классе расчета достаки

Добрый день.
пытаюсь сделать расчет стоимости доставки, в зависимости от времени, выбранного пользователем. Для этого добавил поле — Удобное время доставки, в нем интервалы. У каждого интервала своя стоимость плюсом.
Скажите, как данные из этого поля передать в скрипт своего класса расчета стоимости доставки?

Сам расчет стандартный

class msDeliveryCourierHandler extends msDeliveryHandler implements msDeliveryInterface {
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
        $freedeliverysumm = 1299;
        $delivery_time = 28; // Значение интервала
        $cart = $order->ms2->cart->status();
        $zakaz = $order->get();
        $cart_cost = $cart['total_cost'];
        if($cart_cost > $freedeliverysumm){
            return $cost;
        }else{
            $delivery_cost = parent::getCost($order, $delivery, $cost);
            return $delivery_cost;
        }
    }
}
Андрей
05 декабря 2022, 10:37
modx.pro
495
0

FormIt сохранить поля которых нет в форме

Здравствуйте! Столкнулся с таким вопросом.
Есть формы которые отправляют определенные данные и сохраняют их в FormIt. Но мне нужно чтобы дополнительно FormIt сохранял определенные данные, которых нет в форме (по определенным причинам я не хочу их там указывать, даже скрывая эти поля).
И вот даже не могу понять в какую сторону копать. В идеале это было бы сделать Плагин, чтобы в каждую форму не писать новый Хук, но и с Хуком в целом подойдет.

В документации ничего такого не нашел. Посмотрел Сниппет FormItSaveForm там есть такое:
$newFormArray = array(
        'form' => $formName,
        'date' => time(),
        'values' => $dataArray,
        'ip' => $modx->getOption('REMOTE_ADDR', $_SERVER, ''),
        'context_key' => $modx->resource->get('context_key'),
        'encrypted' => $formEncrypt,
        'encryption_type' => $encryptionType,
        'hash' => $formHashKey,
    );
Роман
05 декабря 2022, 07:22
modx.pro
592
0