Всего 123 609 комментариев

Артур Шевченко
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} не работает получается?
Игорь
10 октября 2023, 00:40
0
вроде почти со всем уже разобрался… только не могу понять, почему когда мышкой перемещаешь ползунок слайдера, цифры в результате, чаще всего «немножко не правильные» вылазят (когда мышкой двигаю — всё четко)… я так понимаю, что это связано с тем, что «в самом коде слайдера нужно изменить отправку события change только когда «отпустили» ползунок» — только как это сделать, я в js не особо ((
Игорь
09 октября 2023, 21:49
0
сейчас увидел, что это я в чанке tpl.mFilter2.filter.number просто кавычки забыл закрыть в параметре name="{$filter_key}"… но, всё равно, нормально пока не работает — у меня два этих ползунка, а в js я не особо силен… если есть готовое правильное решение — было бы очень круто )
Игорь
09 октября 2023, 21:29
0
Здравствуйте.
Тоже пытаюсь «прикрутить» Ion.RangeSlider к mFilter2.
Может быть кто-нибудь разобрался уже с этим вопросом?
Вроде бы все и просто должно быть, но по факту корректно не работает совсем у меня.
1. Чанк tpl.mFilter2.filter.slider:
<fieldset id="mse2_{$table ~ $delimeter ~ $filter}">
    <div class="price" id="js-range-slider-{$filter_key}">
		<div class="name">{('mse2_filter_' ~ $table ~ '_' ~ $filter) | lexicon}</div>
		<!--<div class="mse2_number_slider mse2_number_inputs row"></div>-->
		<input type="text" class="js-range-slider mse2_number_slider mse2_number_inputs row" name="{$filter_key}" value=""
        data-type="double"
        {$rows}
        data-grid="true"
    />
	</div> 
</fieldset>
2. Чанк tpl.mFilter2.filter.number (наверное так не правильно делать, но чисто для примера):
{var $key = $table ~ $delimeter ~ $filter}
{if $idx == 0}data-min="{$value}" data-from="{$value} name="{$filter_key}" id="mse2_{$key}_{$idx}" value="{$value} data-current-value="{$current_value}" class="form-control ml-1""{/if}
{if $idx == 1}data-max="{$value}" data-to="{$value} name="{$filter_key}" id="mse2_{$key}_{$idx}" value="{$value} data-current-value="{$current_value}" class="form-control ml-1""{/if}
3. Скрипт, который должен реагировать на изменения ползунка (из вашего примера), он вроде даже как-то и «реагирует», но очень странно:
<script>
    $(".js-range-slider").ionRangeSlider({
        range: true,
        type: "double",
        keyboard: true,
        input_values_separator: ",",
        onFinish:function(ui) { 
	    $('.js-range-slider').val(ui.from + ',' + ui.to);
            $('.js-range-slider').trigger('change');
	} ,
    } ) ;
</script>
Дмитрий
08 октября 2023, 21:06
0
Добрый день! Можете поделиться шаблоном из СБИСа?
Zulya
08 октября 2023, 10:37
0
Спасибо! Статьи при прокрутке подгружаются. Но адрес страницы в адресной строке браузера не меняется.
Подкорректирую свой вопрос.
Артур Шевченко
08 октября 2023, 10:09
1
+1
pdoPage умеет так делать. Ставишь ajaxMode=scroll и limit=1 и в добрый путь
Николай Савин
08 октября 2023, 08:26
+1
Так то во втором комментарии это уже написано.
Алексей Смирнов
07 октября 2023, 22:53
1
+1
Лечение проблемы c фотками в phpthumb для MODX 2.8.6 для версии php 7.4 через костыль:
Убираем слово mixed в строке 317 в файле core/model/phpthumb/phpthumb.class.php
Спасибо @Иван Климчук за наводку.
Николай Савин
07 октября 2023, 16:23
+1
От компонентов зависит. сам MODX3 прекрасно работает на 8.1
Я сейчас делаю модуль интернет-магазина MiniShop3 на 8.1 — ничего нигде не пукает
Да я сначала поставил 3 на 8.2, но потом понизил до 7,4, поскольку не все расширения работали. Сейчас смотрю некоторые подтянули, на 8.0 вроде все работают, которые у меня стоят. Но на php 8.1 сайт «пукнул» пару символов и сдох вообще.
Василий Наумкин
07 октября 2023, 06:19
0
На всякий случай, даже 8я версия PHP уже устарела и получает только обновления безопасности.

www.php.net/supported-versions.php
3.0.4 тоже после обновления «обсиренилась» пока не поднял php до 8.0, после повышения вроде всё пришло в норму. PdoTools и MIGX работают нормально.