Всего 123 793 комментария

Артур Шевченко
26 февраля 2024, 09:05
0
Возможно дело в источнике файлов, который не подставляется при выводе.
weranda
26 февраля 2024, 09:03
0
А как и откуда его получить, чтобы этот код корректно завелся?
Иван Бочкарев
26 февраля 2024, 06:41
0
Поправил пост
Андрей
25 февраля 2024, 21:37
+1
Для каких целей это нужно? 3й шопкипер выпущен 7 лет назад, давно не поддерживается и имеет достаточно много проблем. Если уже и переносить, то в минишоп =)
Артур Шевченко
25 февраля 2024, 21:36
0
И под cut портянку убери.
Артур Шевченко
25 февраля 2024, 21:35
0
Ты бы код в соответствующий тег обернул что ли, читать же невозможно.
Артур Шевченко
25 февраля 2024, 21:34
0
// отправляют данные в обработчик
            fetch("request_response.php", {
                "method": "POST",
                "headers": {
                    "Content-Type": "application/json; charset=utf-8"
                },
                    "body": JSON.stringify(data)
                }).then(function(data) {
                    console.log(data);
                    if (data["passed"] == "passed") {
                        // если капча пройдена, то перезагружаю страницу
                        window.location.reload();
                    }
                })
Тут вместо перезагрузки вставляй в новый контент из data.
vit
vit
25 февраля 2024, 17:01
0
Я бы сделал с помощью js
Типо если капча выполнена показывается контент
Александр Туниеков
25 февраля 2024, 14:40
0
Уже не помню :-(. может вот здесь проблема
$contents = explode(',',$contents);
Евгений
25 февраля 2024, 14:18
0
Та же самая проблема с тем же самым сниппетом. Как решили? Вроде сниппет простой, не могу понять почему запятые так влияют?
vit
vit
24 февраля 2024, 22:36
0
спасибо два способа рабочие
Wassi Wassinen
24 февраля 2024, 20:02
0
@Наумов Алексей нашёл ещё баг. В источнике файлов для Fileman указываю максимальный размер файла. Он больше, чем в системных настройках. Но не даёт загружать — подтягивает ограничение из системных настроек.
Наумов Алексей
24 февраля 2024, 14:03
+1
так?.. только обрати внимание, я условия поменял для примера.
'where' => [
    ["status" => 0, "date1:<" => "2024-02-23"],
    ["OR:status" => 1, "date1:>" => "2024-02-23"]
],
Артур Шевченко
23 февраля 2024, 23:27
+1
Попробуй так
{$_modx->runSnippet('!pdoPage', [
                'element' => 'migxLoopCollection',
                'classname' => 'HistoryPayment\Model\Payment',
                'tpl' => 'pay',
                'where' => "(status1 = 0 AND date1 < '2024-02-23') OR (status2 = 0 AND date2 = '2024-02-23')",
                ])}
vit
vit
23 февраля 2024, 21:40
0
Это я пробовал все в один записать
'where' =>["status1" => "0", "AND:date1:<"=>"2024-02-23", "OR:status1" => "0", "AND:date1:<"=>"2024-02-23"],
Не получается мне нужно чтобы два условия, как бы отдельно срабатывали
Либо статус1 и дата1, либо статус 2 и дата2
Артур Шевченко
23 февраля 2024, 18:32
0
Так же как и AND, только OR
Артур Шевченко
23 февраля 2024, 18:31
0
Вот код сниппета, который выбирает нужные данные из БД и форматирует их в нужный вид
$tablePrefix = $modx->getOption('table_prefix');
$sql = "SELECT Product.pagetitle AS name, Data.price AS price, Parent.pagetitle AS parent FROM {$tablePrefix}site_content Product
LEFT JOIN {$tablePrefix}ms2_products Data ON Product.id = Data.id 
LEFT JOIN {$tablePrefix}site_content Parent ON Product.parent = Parent.id
WHERE Product.class_key = 'msProduct'";
$statement = $modx->query($sql);
$products = $statement->fetchAll(PDO::FETCH_ASSOC);
$output = [];
foreach ($products as $product) {
    $output[$product['parent']][] = $product;
}
return $output;
Виктор
23 февраля 2024, 18:06
0
Приветствую!
Столкнулись с такой проблемой. При импорте остатков создаются новые сроки на вкладке «Остатки». В них вместо размера — слово «Нет».
Не во всех товарах так. Где-то таких строк больше, где-то меньше. Кто-нибудь сталкивался, с чем это может быть связано?

Импорт был настроен и долгое время работает автоматически, а недавно обнаружили такое поведение.

prntscr.com/5SIe0t5KvYJc
Pandemic
23 февраля 2024, 13:18
0
Возможно у меня была проблема из-за того что в настройках мсинка установлена галка, чтобы публиковать в любом случае, и получается мои плагины на событие отрабатывают верно, но настройка мсинка отрабатывает позже, и перебивает друг друга, а на на импорте торговых предложений просто, отрабатывает как надо.
Но всё же как-то это событие должно лучше подходить «mSyncOnBeforeImportProduct» так как оно убирает доп сохранение ресурса, вместо условно двух, будет 1.
Сергей Карпович
23 февраля 2024, 13:09
0
У меня такой плагин работает на событие «mSyncOnProductImport»

<?php
/*
    https://docs.modx.pro/components/msync/events-and-plugins
    mSyncOnProductImport:
    $mode: Строка "category" для категорий или "create" для новых товаров или "update" для обновления товара. 
    $resource: Объект msCategory или msProduct. Объект минишопа, созданный или обновленный в данный момент
    $properties: array Массив свойств товара, извлеченных из XML, пустой для категории.
    $data: Объект mSyncCategoryData или mSyncProductData. Объект привязки категории или товара 1С к объектам минишопа
*/

if ($modx->event->name != 'mSyncOnProductImport') return;

/*
    Проверим, что свойство "Исключить из публикации на веб-сайтах" передано в выгрузке из 1С 
    (может и не быть). Если его нет значит данное свойство не поддерживается в базе 1С и 
    ничего не делаем. Если есть и это товар тогда делаем что надо.
*/
if ( is_a($resource, 'msProduct') ) {
    if ( array_key_exists('Исключить из публикации на веб-сайтах', $properties) ) {
        $hide = mb_strtoupper($properties['Исключить из публикации на веб-сайтах']) === mb_strtoupper('Да');
        if ( !isset($mSync) ) {
            $mSync = $modx->getService('msync', 'mSync', $modx->getOption('msync_core_path', null, $modx->getOption('core_path') . 'components/msync/') . 'model/msync/', array());
        }
        if ($hide) {
            // Если параметр передан и имеет значение Да, скрываем номенклатуру:
            $resource->set('deleted', 1);
            $resource->set('deletedby', $mSync->config['user_id_import']);
            $resource->set('deletedon', time());
            $resource->save();
            $mSync->log('Товар с идентификатором ' . $resource->get('id') . ' помечен удаленным.', 1);
        } else {
            // Если параметр передан и имеет другое значение, восстанавливаем номенклатуру:
            if ($resource->get('deleted') == 1) {
                $resource->set('deleted', 0);
                $resource->save();
                $mSync->log('Товар с идентификатором ' . $resource->get('id') . ' восстановлен из корзины.', 1);    
            }
        }
    }
}