Александр Мельник

Александр Мельник

Был в сети 15 февраля 2026, 18:37
Заказы не принимаю
так я тоже делал, но тут вопрос — почему не работает так как описано? У кого не спрашиваю, у всех всегда выводится на экран весь массив данных.
Но и плюс ко всему, это к тому чтобы открыть код сниппета и посмотреть там- только те плейсхолдеры, которые лежат в массиве total отображаются на сайте и преобразовываются в значения. Как я понимаю, это от того что они входят в сниппет как простые элементы, а не как массивы. Но в сниппете есть еще и массив — delivery / order/ payment и куча других. В них входят элементы, зачасую с одним и тем же именем. К примеру есть delivery->name а есть payment->name. Не соображу как составить имя плейсхолдера, чтобы обратиться к ним.
Сегодня перестали отображаться даже плейсхолдеры [[+weight]] [[+goods]] и так далее.
Если вчера код
[[!msGetOrder?id=`35`]]
[[+goods]]
выводил мне товары, то сегодня — пустота.
Бред какой-то. Но учитывая, что функционал сайта сохраняется, то означает что это я туплю. Но как один и тот же код может работать вчера и не работать сегодня.
$outer = array_merge($order->toArray(), array(
	'user' => $user ? $user->toArray() : array(),
	'address' => $address ? $address->toArray() : array(),
	'delivery' => $delivery ? $delivery->toArray() : array(),
	'payment' => $payment ? $payment->toArray() : array(),
));

$outer['goods'] = '';
$outer['cart_count'] = 0;
$outer['cost'] = $miniShop2->formatPrice($outer['cost']);
$outer['cart_cost'] = $miniShop2->formatPrice($outer['cart_cost']);
$outer['delivery_cost'] = $miniShop2->formatPrice($outer['delivery_cost']);
$outer['weight'] = $outer['cart_weight'] = $miniShop2->formatWeight($outer['weight']);
Это часть php кода из сниппета msGetOrder. Насколько я понимаю goods, cart_count, count,cart_cost, delivery_cost, weight создаются просто как элементы массива. Пишутся в переменную outer (которая и возвращается как результат функции) и поэтому к ним получается обратится напрямую через плейсхолдер [[+weight]].
А остальные элементы передаются как массивы и логично предположить что обращаться к ним нужно так — массив[элемент массива]. Тоесть плейсхолдер должен выглядеть как-то так [[+payment[name] ]]. Но modx не позволяет такую запись. Как-то пробовать экранировать квадратные скобки? Но это уже выглядит совсем не гармонично. Не верю что в miniShop2 не предусмотрели возможности обратиться к таким элементам…
В [[+goods]] выводится.
Я хочу вывести на экран массив значений, лежащих в msGetOrder.
Вот как на этом скриншоте —
yadi.sk/i/Eabu6Gopui9GB
Документация говорит что любой из сниппетов miniShop2 можно вывести на экран в виде массива только лишь указав ему пустой чанк в виде шаблона.
У меня почему то ни с одним сниппетом это не сработало.