Максим Кузнецов

Максим Кузнецов

Был в сети 04 августа 2021, 21:51
Заказы принимаю
[[pdoField? &id=`[[+id]]` &topLevel =`0`]]
— но вызывать в каждом пункте меню такую проверку не лучшим образом скажется на производительности. Лучше вообще пересмотреть подход к решению.

Можно, например, использовать атрибуты ссылки документов, дописав в элементы верхнего уровня «topLevel», а в вызове pdoMenu проверять уже его наличие.
В системных настройках ticket'сов можно указывать путь до файла скриптов — вам нужно сделать копию файла и прописать путь до него, чтобы обновление не затерло ваши изменения.

А в целом — почти не костыль.) Только если добавленный комментарий определит новую страницу, то скрипт перенесет не на последнюю…
А в чем здесь вопрос?

Upd: добавление нового комментария происходит при помощи аякса, возвращая комментарий методом
append в нужный контейнер ('#comments' или '#comment-'+parent+' > .comments-list', если комментарий добавлен вложенным ответом). С выводимым сниппетом он уже никак не связан.

Для решения вашей проблемы, вы можете или переписать скрипт assets/components/tickets/js/web/default.js под себя, или отключить аякс-добавление для комментариев, или перезагружать pdoPage своим аяксом, при добавлении комментария.
Мм… не думаю — бутстрап подключает множество неявных на первых взгляд условий (адаптивная верстка, например) и наследуемых параметров. Впрочем, все упирается в то, насколько сильно ваш дизайн отличается от стандартного с бутстрапом.
Возможно, на вашем хостинге закончилось дисковое пространство. Также советую проверить права пользователя, которым был выполнен запрос в консоли — возможно, он создал запись в кэше, которую потом не может перезаписать сайт (схожая тема).

По вопросу с этой сборкой, думаю, вам лучше обратиться непосредственно в modxclub.

Что же до нагрузочного тестирования — лично не ставил, но вполне может быть, учитывая комментарии непосредственно на хабре.
Чанк для плейсхолдера [[+goods]] устанавливается внутри сниппета msGetOrder:
[[!msGetOrder?id=`[[+id]]` &tplRow=`ваш_чанк`]]

Если вам нужно подключать разные чанки, в зависимости от того, с какого устройства зашел пользователь (и вы определяете это через
MobileDetect), то что мешает получить результат следующим образом:
<standard>[[!msGetOrder?id=`[[+id]]` &tplRow=`ваш_чанк_обычный`]]</standard>
<tablet>[[!msGetOrder?id=`[[+id]]` &tplRow=`ваш_чанк_для_планшетов`]]</tablet>
<mobile>[[!msGetOrder?id=`[[+id]]` &tplRow=`ваш_чанк_мобильный`]]</mobile>

В крайнем случае, если обработка сниппета сработает раньше, чем определение MobileDetect, вы можете написать простой сниппет, определяющий плейсхолдер в зависимости от версии устройства и его результат уже возвращать в tplRow.
Задача решается путем реализации 2х составляющих:

1. Js (идентификатор и алерт заменить на подходящие себе):
$( ".ms2_form input[name='count']" ).change(function() {
	$.jGrowl("Минимальное количество товаров для заказа - 5 шт", {theme: 'error', position: 'center'});
	$(this).val("5");
});

2. Плагин на события msOnBeforeAddToCart и msOnBeforeChangeInCart
<?php
if ($modx->event->name = 'msOnBeforeAddToCart' || $modx->event->name = 'msOnBeforeChangeInCart') {
	$values = & $modx->event->returnedValues;
	if ($values['count'] < 5) {
		$values['count'] = 5;
	}
}
— как-то так.