Дублирование результатов запроса после leftJoin

Уважаемое сообщество, здравствуйте!
В ходе работы над сниппетом, возвращающим список всех заказов пользователя, возникла проблема:
в результирующем массиве информация о заказе продублирована столько раз, сколько товаров включено в заказ.
Пожалуйста, подскажите, каким образом можно вернуть результат присоединения таблицы товаров к заказу в рамках одного элемента массива?
Ниже код моего костыля сниппета (код, относящийся к оформлению результатов выборки вырезан, т.к. к вопросу не относится):
<?php
//
if(!isset($user) || ($user === 0)){
    return '<p>Ошибка! Идентификатор пользователя не определён.</p>';
}

//Задаём значения чанков оформления по-умолчанию
if(!isset($tpl)){ $tpl = 'tpl.profile.orders_list.row'; }
if(!isset($tplWrapper) || ($tplWrapper === '')){ $tplWrapper = 'tpl.profile.orders_list.wrapper'; }
if(!isset($idx)){ $idx = 1; }

$q = $modx->newQuery('msOrder');
$q->select(
    array
    (
        'msOrder.id',
        'msOrder.num',
        'msOrder.createdon',
        'msOrder.cost',
        'msOrder.status',
        'op.product_id',
        'op.name'
    )
);
$q->where(array('msOrder.user_id' => $user));
$q->sortby('msOrder.id','DESC');
$q->leftJoin('msOrderProduct','op', 'msOrder.id = op.order_id');
$query = $q->prepare();
$query->execute();
$orders = $query->fetchAll(PDO::FETCH_ASSOC);

$res = print_r($orders,1);
echo '<div class="ord-lst-wrap"><pre>';
echo $res;
echo '</pre></div>';
Ниже приведен результат работы сниппета, первые два пункта демонстрируют проблему (в заказе два товара):
Array
(
    [0] => Array
        (
            [id] => 9
            [num] => 1511/6
            [createdon] => 2015-11-17 09:43:21
            [cost] => 17849.00
            [status] => 1
            [product_id] => 5553
            [name] => Primavera (гостиная) Комод 1 /Глазово
        )

    [1] => Array
        (
            [id] => 9
            [num] => 1511/6
            [createdon] => 2015-11-17 09:43:21
            [cost] => 17849.00
            [status] => 1
            [product_id] => 5205
            [name] => Berlin 1 (гостиная) Шкаф МНЦ КОРПУС (01, Ясень шимо свентлый) /Глазово
        )

    [2] => Array
        (
            [id] => 8
            [num] => 1511/5
            [createdon] => 2015-11-15 09:00:35
            [cost] => 7599.00
            [status] => 1
            [product_id] => 2034
            [name] => (закрыт) Стенка Франк МА-190 Дуб кремона/Дуб феррара /Столлайн
        )

    [3] => Array
        (
            [id] => 7
            [num] => 1511/4
            [createdon] => 2015-11-10 03:09:59
            [cost] => 26323.00
            [status] => 1
            [product_id] => 5788
            [name] => Акцент орхидея Шкаф-купе 2300х1800х600/ясень шимо темный/шампань/Бумеранг
        )
P.S.: самое простое решение — вовсе избежать leftJoin'а таблицы товаров заказа к запросу, а в оформленном выводе возвращать ссылку с id-заказа, которая вела бы на страничку со сниппетом, принимающим на вход id заказа и возвращающего оформленный список товаров этого заказа. Но, может быть, это возможно сделать в одном сниппете (без обработки результирующего массива на php — объединения элементов с одинаковым id и формированием массива товаров)? Куда копать?
Спасибо!
Денис Райх
18 ноября 2015, 01:15
modx.pro
2
1 878
0

Не получается заставить AjaxSnippet работать

Добрый вечер,
Не получается заставить AjaxSnippet работать. После нажатии — бесконечная загрузка. Подскажите куда копать? Что не так сделал?

Код в шаблоне
[[!AjaxSnippet?
    &snippet=`SnippetTest`
    &parents=`4`
    &tpl=`@INLINE <p>[[+id]] - [[+pagetitle]]</p>`
    &as_mode=`onclick`
    &as_trigger=`Нажми меня!`
]]
Сниппет SnippetTest
<?php
echo '<h3>Запись</h3>';
Ба Ань
17 ноября 2015, 21:03
modx.pro
1
1 236
0

Вопрос по pdoResources

Добрый вечер!
Вывожу следующим кодом на главной странице сайта элементы каталога, включающего дополнительные TV (Dom_image,Gabbarite,Number_etag,Plogad,Price) [№1 на изображении ниже]:
[!pdoResources?
&tpl=`Project_template`
&includeTVs=`Dom_image,Gabbarite,Number_etag,Plogad,Price`
&limit=`6`
&sortby=`{"publishedon":"ASC"}`
]]
Аналогичным кодом вывожу эти же плитки в разделе НОВОСТИ на сайте. Хочу еще по переходу с кнопки ПОДРОБНЕЕ попадать на подробную страницу с описанием, на которой те же TV должны подхватываться из предыдущего вывода. Для этого вызываю другой чанк:
[[!pdoResources?
&tpl=`Project_right_template`
&parents=`0`
&depth=`10`
&limit=`1`
&includeTVs=`Gabbarite,Number_etag,Plagad,Price`
]]
Получаются разные данные первоначального вывода и вывода на подробной странице [№2 на изображении ниже] — разные изображения и разная цена.

Что я делаю неправильно? Сколько раз на странице можно вызывать pdoResources? Есть ли какие-то ограничения?
Антон
17 ноября 2015, 19:14
modx.pro
812
-1

CMPGenerator Pro ускоряем разработку своих пакетов

Hi, сделал новое дополнение CMPGenerator Pro на основе UiCMPGenerator.

Что может CMPGenerator Pro:

Prihod
17 ноября 2015, 18:02
modx.pro
11
6 568
+16

pdoMenu | Запрет отображения подраздела ресурса

Всем привет.

Подскажите, как можно запретить отображение подраздела (*меню 2-го уровня) у ресурса Tickets.
Т.е. на всех пунктах в меню кроме Tickets, при нажатии выпадает подменю, а при клике на раздел Tickets открывается страница с лентой созданных тикетов.
brioni
17 ноября 2015, 17:48
modx.pro
950
0

Вывести MIGX позицию с конкретным idx

Собственно сдаюсь.

Всегда думал что вот этого достаточно чтобы вывести MIGX позицию с idx 5

[[getImageList?
    &tvname=`managers`
    &tpl=`managers.email`
    &docid=`464`
    &toPlaceholder=`MIGX`
    &where=`{"idx:=":"5"}`
]]
Оказалось фигушки. Не выводит ничего. При этом если сделать {«idx:!=»:«5»} то выводятся все позицию сразу, что наводит меня на мысль об ошибке в синтаксисе.
Или нет?

Помогите разобраться.
anatol
17 ноября 2015, 13:02
modx.pro
1
3 376
0

Непонятки с датой, обрезкой фото

Добрый день, уважаемое сообщество.

Переношу сайт с evo на revo (сайт простой и почти все сделал) и столкнулся с двумя проблемками:
Евгений Вершинин
17 ноября 2015, 12:32
modx.pro
973
0

XPDO where по дате

Привет, помогите пожалуйста разобраться с датой через XPDO. Я уверен, что неправильно с ней работаю, направьте на путь истинный.

Берётся текущий день, затем через цикл выводятся 5 материалов за этот день, в конце цикла прибавляется к текущей дате +1 день, затем цикл опять выводит материалы за данный день и т.д.

Вопрос следующий, как можно исключить из выборки дни, в которых не было материалов(т.е. если у текущего дня нет материалов, вместо него берётся след. день, где есть материалы).
Павел
17 ноября 2015, 10:14
modx.pro
1
1 877
0

Tickets и категории

Здравствуйте.
Спасибо за такое дополнение.
Но как давать возможность пользователю выбрать категорию при добавлении тикета?

Например, один тикет пойдет в контейнер «Заявки на установку», а другой пойдет в раздел «Вопросы по использованию».
Всего 42 раздела.

Как тут быть? Возможно другой компонент надо использовать?

Спасибо.
Anton
17 ноября 2015, 10:04
modx.pro
1 218
0

[FormIt] Обработка чанка - тела письма, в хуке

Кто может объяснить, почему неправильно работает этот вызов в хуке email, и в снипете FormItAutoResponder тоже самое — возвращает пустоту?
Из-за этого бага я тщательно пересохранял все названия почтовых чанков, а то вдруг там закрался кириллический символ (><), проверил все пути и перевтыкал все настройки почты, вобщем вынесло моск не на шутку.
В итоге Я заметил его нативным и теперь все отлично(мне так кажется).

//$message = $this->formit->getChunk($tpl,$fields); // BAD String
$message = $this->modx->getChunk($tpl,$fields);
Виталий Петрович
17 ноября 2015, 09:29
modx.pro
709
0