Добавлю свои 5 копеек.
MODx и Joomla — это прекрасные открытые системы. Но различаются они весьма сильно! И по идеологии, и по реализации.
А теперь рассмотрим как это все связанно между собой. Допустим нужно вывести такую штуку как слайдер на 3 картинки на главной странице.
Что делает Joomla – ставь в шаблоне в заголовке регион, ставь компонент слайдер, указывай ему регион и говори что хочу сделать это на главной странице. В настройках указывай размера картинки, в шаблоне правь вывод галереи.
А теперь что делает MODx разработчик – создает 3 TV-параметра для главной страницы, назначает им вид – картинка. И выводит ее в шаблоне. Все.
Теперь усложним задачу. Нужно выводить этот слайдер на всех страницах. В Joomla – говоришь что выводить не на главной, а на всех. Все.
В MODx пишешь свой сниппет с простой логикой для универсального решения:
1. Получить входные данные и проверить их.
2. Получить данные из TV-параметра из базы с помощью одной функции API
3. Вывести их собгласно шаблону. Шаблон внутри кода, а если очень хочется, то можно сделать и так, что его можно задавать.
Вывести в шаблонах вызов этого сниппета на всех нужных страницах. Тут еще одно отступление: в MODx используются не 1, а несколько шаблонов. Но все шаблоны могут использовать чанки – куски кода HTML, в которые можно встравивать вызовы сниппетов. Т.е. в чанки заголовка прописывается вызов сниппета вывода слайдера и он появится на всех.
Так что по сложности MODx имеет отставание от Joomla по сложности
. Вот только в Joomla берется то, что уже кто-то написал. А найти нормально написанный без дырок модуль или компонент – проблемка.
А давайте еще усложним задача. Допустим нужно вывести ленту новостей. В Jooma насоздовал материалов, расставил отделения основной новости от анонса и вывел в меню как вывод ленты статей. Все просто. А если я хочу выводить маленькую картинку? Да еще и с выводом по клику через Lightbox большею? А если я еще и в статье хочу выводить среднюю картинку? И тут однозначтно нужен модуль/компонент. Да, что-то появляется в Joomla 2.5 как картинка превьюшка анонса. Я лазил в репозитарии и находил несколько компонентов, которые корежили базу
и добавляли поля к материалам. Но для именно такого безумного функционала нужно писать самому такой компонент.
А разберем теперь, как это делается в MODx. Нам понадобится всего лишь определить шаблон вывода анонса новости, создать TV-параметр для шаблона новости и сделать вызов сниппета вывода ленты новостей. Для уменьшения картинки на лету можно задавать в шаблоне вызов еще одного сниппета, который приведет вывод картинки в заданном разрешении. Все. Даже программировать на php ничего не надо.
И вот с этими TV-параметрами, сниппетами вывода меню, вывода ленты можно собирать сайты уже совершенно другой сложности – каталоги, магазины и так далее. А все потому, что при грамотном вызове сниппета вывода ленты с нужным шаблоном можно выводить с условиями, сортировкой, из разных веток, включать и исключать страницы из вывода. Сами подумайте какие безграничные возможности в этом таятся!
Для примера: вывод RSS ленты – вывод ленты новостей с шаблоном для RSS из ветки новостей и ветки статей за исключением контейнеров. Для вывода карты сайта – сделать вывод сниппета меню, с граничными услвиями, где нужно только исключить вывод служебных старниц.
Вот это и есть база MODx, а потому куча компонентов, модулей просто не нужна! Ну какой смысл писать компонент агентства недвижимости, если все это делается практически 2 сниппетами, которые стандратны, грамотным планированием TV-параметров?
Ну а теперь немного о кешировании. В MODx кешируется все: страницы, вызовы сниппетов. И кеш очищается и обновляется по правилам, которые задаете вы. Полностью кеш обновляется только при нажатии специальной кнопки в админке. А когда редактируется ресурс обновляется только то что изменилось и что касается изменения. Именно по этому, кеш в MODx работает в 3 раза лучше! Лично проверял.
Но если бы было все хорошо в MODx, то эта бы система завоевала бы мир![:TROLLFACE:]
Не все хорошо в MODx, есть и куча нехороших или не очень хороших вещей.
Первая из них .. кеш. Правда, в ветке Evolution 1.06. При количестве страниц около 5000 начинаются серьезные тормоза и движок может отказаться работать из-за нехватки памяти. Дело в том, что система использует один огромный файл кеша и обращается к нему. И граница в 5000 страниц требует больше 256 МБ памяти. Это можно предотвратить выносом части ресурсов в отдельную базу и написанием своего модуля (для Joomla компонента) для управления всего этого. А можно перейти на ветку Revo, где проблемы с кешем устранены.
Вторая и главная проблема: разработчик должен что называется «въехать в систему». И его квалификация должна быть не на уровне «не знаю HTML, но хочу сайт», и очень желательно еще и знатьхотя бы основы php. Тогда проекты типа визитки собраются довольно легко, чуток сложнее каталоги, ну а для магазинов уже нужно серьезное знание php, json и куча всего еще.
Админка в ветке Evolution 1.06 уже устаревшая, но понятная. Она проигрывает Joomla по красоте, по адаптации, где-то понятнее, где-то более непонятная. А в ветке Revo админка стала гораздо красивее, но еще более сложнее. И тормознее из-за js скриптов . Часть этих недостатков можно преодолеть, благо есть стимул, но факт остается фактом – админка Joomla быстрее ворочается даже на локалке.
Ну и напоследок – социальные функции MODx гораздо слабее. Точнее они есть, они работают, но нет готовых решений для социалки типа ComminityBuilder. Да, есть реализация комментирования, регистрации, есть профайлы пользователей, есть права. Но связать это в минимальный портал с социиалнкой: комментарии, регистрация, профиль, галерея, форум – легче использовать другой движок.