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

Ivan K.
12 октября 2023, 17:16
0
С github, жму download zip. Почему-то там лежит вариант с ошибками в коде, конкретно в файле rename_it.php. Понял когда не получилось переименовать пакет)
Николай Савин
12 октября 2023, 17:09
0
Спасибо за обратную связь. Расскажи откуда ты берешь zip и как понял что он не рабочий?
Евгений Webinmd
12 октября 2023, 14:12
0
Да, компонент полностью рабочий. Пользователь должен быть авторизован, чтобы увидеть функционал
Ivan K.
11 октября 2023, 18:50
0
Хочу еще отметить, если скачивать zip-архив, почему-то нерабочая версия заготовки в этом архиве. А вот если клонировать, то все нормально.
Ivan K.
11 октября 2023, 17:22
0
Спасибо за заготовку. Кстати отлично работает под php 8.1
Денис Усманов
11 октября 2023, 16:38
0
Советую читать документацию) ну и заглянуть вот сюда
Денис Усманов
11 октября 2023, 16:24
0
Зачем писать сниппет, если достаточно просто передать ТВ поле в pdoMenu?

[[pdoMenu?
        &parents=`7`
        &level=`1`
        &includeTVs=`categoryicon`
        &tpl=`liTpl`
]]

liTpl:
<li [[+classes]]>
        <span class="menu-icon">
                <img src="[[+categoryicon:default=`assets/images/category/default.svg`]]" alt="Icon">
        </span>
        <a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>
        [[+wrapper]]
</li>
Владимир Бабусенко
11 октября 2023, 12:34
0
Подниму тему, т.к. данная проблема периодически возникает у пользователей, а ее воспроизвести не можешь. Не может ли это быть связано с серверным параметром session.gc_maxlifetime. По умолчанию он обычно равен 1440 сек. или 24 минуты. На сервере каждому пользователю сайта инициализируется сессия, которая при бездействии очищается через 24 минуты. ajaxForm при инициализации в сессию пользователю пишет ключ формы. Возможно же что, пользователь начал заполнять какую либо форму, его отвлекли, вернулся через час-два, продолжил заполнять форму жмет отправить-сохранить форму, и т.к. сервер уже зачистил сессию, то ajaxForm и не находит ключ в сессии. Отсюда и сообщение о не найденном ключе. Как решение, увеличить время жизни сессии session.gc_maxlifetime.
Viktor
11 октября 2023, 12:17
0
core/components/jevix/vendor/agelxnash/jevix/src/functions.php

до — ord($c{0})

после — ord($c[0])

Везде поменял и заработало!
Pavel Kravchuk
10 октября 2023, 23:05
0
Здравствуйте
подскажите пожалуйста, как используя данный плагин вывести лейбл поля? я его передаю в плагине и на вкладке Адрес он отображается, а вот на вкладке Заказы только общая DIV со значением.
Спасибо.

Артур Шевченко
10 октября 2023, 21:37
0
Устанавливаешь не ниже SendIt 1.0.4. Создаёшь пресет со своим сниппетом. Потом в JS делаешь так
document.addEventListener('si:init', (e) => {
    SendIt?.setComponentCookie('sitrusted', '1');
    SendIt?.Sending?.prepareSendParams(document, 'custom');
})
Код выше запустит твой сниппет сразу после загрузки скриптов SendIt, но ты можешь указать любое другое нужное тебе событие.
А чтобы получить ответ можно сделать так
document.addEventListener('si:send:after', (e) => {
    const {action, target, result, headers, Sending} = e.detail;
    console.log(result);
})
Артур Шевченко
10 октября 2023, 20:47
0
Использовать асинхронную отправку формы. По умолчанию после отправки формы страница перезагружается, а надо чтобы не. Для этого есть такой компонент как SendIt c подробной документацией и примерами.
Евгений Дубровин
10 октября 2023, 11:50
0
Доброго времени!
А не подскажете где можно взять информацию о том, как сделать ajax подгрузку результатов поиска?
Вроде много кому должно было понадобиться, но пока не нашел ничего по этой теме.
Гарри
10 октября 2023, 10:49
0
Используйте это: (дополнительный массив)
'sortConfig' => [ ["sortby"=>"id","sortdir"=>"DESC"] ],
Артур Шевченко
10 октября 2023, 10:46
+1
Есть вероятность что в параметре sortConfig должен быть исключительно JSON, а не масиив.
Николай Савин
10 октября 2023, 07:39
1
+4
Позволю себе несколько замечаний.

1. Если заказов много — такой сниппет не сможет выполнить свою работу. Лучше вешать задачу на планировщик

2. Использование getCollection. Это не лучший вариант. Этот метод загружает в ОЗУ сразу всю коллекцию объектов заказа, что не лучшим образом отражается на производительности и ресурсах. Лучше использовать итератор через метод getIterator. Такой метод загружает в память только список объектов, при переборе по очереди достает из базы информацию. Этот метод существенно быстрее работает и кушает меньше ресурсов. К слову итератор это не изобретение MODX. Это паттерн PHP. Да и не только PHP — он почти во всех языках используется.

3. Это что за странная конструкция такая?
$modx->getOption('table_prefix')."ms2_order_addresses
Зачем так? Почему? Есть же гораздо более корректный метод обращения к таблице
$modx->getTableName('msOrderAddress');
Так-то люди вполне могут переименовать таблицу, просто указав нужное имя в модельке. И приведенный метод гарантировано выдаст нужную таблицу.

4. Использовать getChunk я бы рекомендовал так:

$pdoTools = $modx->getService('pdoTools');
$pdoTools->getChunk('name', $params);
Этот вариант, в отличие от $modx->getChunk обработает конструкции и MODX и феном.

5. Не ошибка. Даже не предупреждение. Скорее глаз режет.
Использование прямых SQL конструкций.

Мы же в MODX работаем. Желательно использовать конструктор запроса. newQuery — его не просто так придумали. Помимо универсальности запроса, не привязанного к конкретной СУБД — это еще и выглядит красиво, аккуратно, профессионально. Сразу видно, что человек знает свое рабочее место.
Игорь
10 октября 2023, 01:01
0
ну и выбранные диапазоны цен почему-то не запоминаются (т.е. выбрал диапазон, перезагрузил страницу — в адресной строке браузера цифры есть, в ползунке все «по умолчанию»)… переменная {$current_value} не работает получается?