Ребята, я тоже много думал о том, как хранить в MODx большие каталоги объектов/документов и удобно с ними работать.
Много разных идей приходило в голову, и остановился я в итоге на следующей стратегии:
1. Оптимизация работы с полями.
Как выше было предложено, атрибуты, многократно используемые в нескольких объектах/документах (улицы,типы,марки), должны быть вынесены в отдельную ветку и подключены с помощью конструкций @EVAL и специального сниппета. Для того и был некогда придуман ddTree, а в итоге и более мощный Quill (
http://modxcms.com/Quill-2172.html). Кстати ddTree эволюционировал в Quill поскольку, кроме необходимости вывода древовидного списка в менеджере понадобилась возможность выводить во Frontend текстовое значение TV (т.е. код документа, хранящийся в TV транслировать в pagetitle соответствующего документа).
2. Проблема сортировки, постраничного вывода и тормозов mySQL.
Изначально я отказался от Ditto. Для решения задач со сложной сортировкой и выборкой данных мне не хватило его гибкости.
Когда возникает задача сортировать документы по нескольким параметрам сразу, часть из которых атрибуты документа, а другая часть параметры TV, запрос mySQL раздувается до невероятных размеров + включает сложные конструкции (причем, не для любого случая такую конструкцию мне удавалось придумать). Решение пришло со временем — для каждого шаблона автоматически создавать таблицу (shadow), в полях которой будут храниться значения TV. Связав нетрудной SQL-конструкцией данную таблицу с таблицей документов, можно получить полноценный массив объектов, который будет поддаваться легкой и гораздо более быстрой выборке и сортировке. Результатом размышлений стала альфа плагина Quid (
http://modxcms.com/Quid-2305.html)
3. Альтернатива дереву менеджера.
Бесспорно, написать модуль для управления данными (объектами) конкретного проекта - наверно самый оптимальный путь. Но, что если сделать доступ к данным проще, используя возможности самого MODx. Я пока нахожусь в стадии тестирования одного подхода, и не могу пока судить объективно о его недостатках, но суть в следующем: добавлять новые документы/объекты прямо из Frontend. Т.е. менеджер после авторизации открывает раздел каталога через Frontend и жмет на кнопку Добавить/Редактировать, после чего открывается окошко с привычным интерфейсом Backend, но уже без дерева. Для желающих протестировать данный метод, предлагаю альфу плагина Quim (
http://modxcms.com/Quim-2308.html). Да, чуть не забыл главное, данный плагин также самостоятельно будет выбирать шаблон для дочернего документа, скрывать ненужные поля и прочее.
Насколько все эти шаги оправданы покажет время. Комментируйте.
P.S. По-моему, причины возникновения всех препятствий, возникающих в данной ситуации в MODx, в том, что эта система ориентирована на управление страницами а не объектами. К счастью есть Revolution, в котором работе с объектами уделено особое внимание!
Успехов и новых смелых идей в Новом Году!