Владимир

Владимир

Был в сети 28 января 2025, 15:22
Заказы не принимаю
Проблему, описанную в п.1, удалось решить, добавив строчку в контроллер. Но появилась новая: вылетают ошибки 404 при попытке получения json по ранее существовавшим путям при включённом плагине ZoomX, если его отключить — всё ок. Как исправить?
Спасибо! Начал разбираться с настройкой api по статье modx.pro/howto/22727 и столкнулся со след. проблемой: при выполнении кода skr.sh/i/300123/ntmOsnL1.jpg в плагине miniShop2 при событии OnLoadWebDocument роут вида sitename.com/api/pages/1 возвращает ошибку 500, т.к. невозможно получить class_key, насколько я понимаю skr.sh/i/300123/2AQECclc.jpg — как это правильно обойти?
Добрый день! Сделал всё по инструкции, столкнулся с проблемой: в выпадающем списке второго уровня выводятся подразделы всех пунктов списка первого уровня независимо от выбора, при этом в список третьего уровня не выводится уже ничего. Так не должно быть, верно? Или есть нюансы при использовании списков множественного уровня?
Идею взял из статьи modx.pro/development/16620, из документации docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/zakaz#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F следует, что при создании заказа $order со всеми прицепленными объектами должен быть непустым. Однако, в моём случае $order ничего не возвращает.
Благодаря сообществу нашёл решение. Возможно, кому-то понадобится:
// устанавливаем параметры сниппета
// key - метка, которую отслеживаем, по умолчанию utm_source
$key = $modx->getOption('key', $scriptProperties, 'utm_source');
// value - значение метки из параметра key, в зависимости от которого будем подменять контент, по умолчанию yandex
$value = $modx->getOption('value', $scriptProperties, 'yandex');

$symbols = array(" ", "-", "(", ")"); // массив символов, которые будем вырезать из номера телефона, чтобы заполнить href="tel:"
$spaces = array("", "", "", ""); // массив пустых значений для подмены вырезаемых символов из номера телефона

session_start();
if (!isset($_SESSION['utm_source'])) {
  $_SESSION['utm_source'] = $_GET[$key]; // заносим в сессию параметр utm_source, присваиваем ему передаваемое через get-запрос значение отслеживаемой метки
}
session_write_close();

if ($_SESSION['utm_source'] == $value) { // если значение метки совпадает со значением параметра сниппета
    // создаем массив phones, куда вносим номера телефонов для подмены
    $phones = array(
       'main' => $modx->getOption('default__phones_direct') // номера телефонов берём из предварительно созданных системных настроек, чтобы контент-менеджеры могли легко сменить их (формат номера +7 (999) 999-99-99)
    );
    
    foreach ($phones as $name => $phone) { // для каждого из телефонов в массиве создаём группу плейсхолдеров
        $modx->setPlaceholders(array(
           $name => $phone, // получится [[+phones__main]] со значением [[++default__phones_direct]]
           $name.'_edited' => str_replace($symbols, $spaces, $phone) // получится [[+phones__main_edited]] со значением [[++default__phones_direct]], откуда будут вырезаны лишние символы для вывода в href="tel:"
        ),'phones__');
    }
} else { // то же самое для случая, когда пользователь пришёл по обычной ссылке без параметров
    $phones = array(
       'main' => $modx->getOption('default__phones_main'),
       'extra' => $modx->getOption('default__phones_extra'),
       'mobile' => $modx->getOption('default__phones_mobile')
    );
    
    foreach ($phones as $name => $phone) {
        $modx->setPlaceholders(array(
           $name => $phone,
           $name.'_edited' => str_replace($symbols, $spaces, $phone)
        ),'phones__');
    }
}
Вызываем сниппет [[getUtmSource]] на странице или в шаблоне, где нужно подменить контент (в моём случае номера телефонов), и выводим плейсхолдеры в код вида
<a href="tel:[[+phones__main_edited]]">[[+phones__main]]</a>, <a href="tel:[[+phones__mobile_edited]]">[[+phones__mobile]]</a>
и т.д. Для каждой страницы можно задать свои значения сравнения utm_source, используя доп. поле myValue: [[getUtmSource?&value=`myValue`]]
Спасибо! Среди комментариев в обсуждении компонента нашел интересующую меня информацию здесь modx.pro/components/16431#comment-102120
Теперь интересует другое: если пользователь перешел на внутреннюю страницу и адресная строка обновилась, возможно ли откуда-то извлечь метку страницы входа или нет?
Насколько я понял. каждый отдельный товарный блок, у которого есть опции, создает такой запрос. Здесь также s6200.h3.modhost.pro/katalog/, только блоков меньше. Плагины, которые потенциально могли бы влиять на задержку при добавлении в корзину, отключил.
Здравствуйте! Планирую приобрести компонент modstore.pro/packages/import-and-export/msync для синхронизации каталога сайта с МойСклад, хотел бы уточнить: при покупке через сайт данные о количестве товаров автоматически обновятся в системе учёта, верно? И точно также при покупке в оффлайн-магазине количество товаров на сайте будет обновлено с учётом совершённой продажи?
Здравствуйте! Хотел бы уточнить: из описания modstore.pro/packages/import-and-export/syncmoysklad понял, что компонент принимает данные об остатках, но не передаёт их в систему учёта. Т.е. при покупке в ИМ нескольких штук товара, на стороне МойСклад данные об их количестве не обновятся, верно?