БлагоДарю, Николай! Вы, как всегда выручаете меня. Не знал, как подключить в свой компонент классы стороннего компонента. addPackage пришёл на помощь благодаря Вам.

Расскажите, как добавить свои методы в класс modx? Чтобы вызывать их таким образом в смарти шаблоне {$modx->customMethod($array)} Реально ли это вообще?

Почти, там fetch, а не fetchAll.

Если нужно именно вывести данные, пусть и с обработкой перед выводом, то выгоднее не использовать getCollection, а выбрать через fetchAll(PDO::FETCH_ASSOC) Именно это и делает метод getIterator

Отвечу, рассчитывая на комментарий Николая, если я неправильно что-то пониманию. Если нужно именно вывести данные, пусть и с обработкой перед выводом, то выгоднее не использовать getCollection, а выбрать через fetchAll(PDO::FETCH_ASSOC), чтобы не создавать объекты. Конечная цель — массив с выбранными документами. TV можно выбрать вторым запросом, используя уже полученный массив, к нему же и присоединить результаты. Дальше уже в цикле обрабатываем и выводим.

я бы в данном случае migx использовал бы, так как все TV вроде однотипные, то по-моему проще из 22 одно, хоть и с JSON массивом сделать. Да и запрос лучше с JOIN-ом писать т.к. 1 запрос пусть и громоздкий лучше чем 1000. <?php $query = $modx->newQuery('modTemplateVarResource'); $query->innerJoin('modResource','modResource','modTemplateVarResource.contentid=modResource.id'); $query->where(array( 'modResource.parent' => 2, 'modResource.deleted'=> 0, 'modTemplateVarResource.tmplvarid'=>1 )); $Tv = $modx->getCollection('modTemplateVarResource',$query); foreach($Tv as $key){ print($key->get('value')); print(' || '); }

Чистая таблица с 10 полями, 1000 строк одновременного вывода сильнонагружает модкс, а тут 22 тв параметра это же с ума сойти… которые отдельно достаются. считай 700*22 это 14к+ запросов к базе. Вообще да, надо расширять modResource и почти все ТВ поля переносить в отдельную таблицу

разница в том, что памяти гораздо меньше используется. По крайней мере, уже на память можно будет не грешить. Ну и как вариант — расширить modResource. http://habrahabr.ru/post/253737/ Это точно поможет :)

Хм, а в чем преимущество, просто выбрать и вывести все ресурсы не проблема, а вот когда начинаешь с ТВ маятся все виснет пока ручками маюсь по одной ТВ а не сразу все 22, работает кое как.