Поделюсь своими первыми впечатлениями от перехода на новый Open Source движок – он был лучшим, но стал еще лучше. Joomla – один из немногих проектов в мире свободного софта, который сделан качественно, на столько качественно, что большинство платных решений стоят в сторонке и нервно курят. Чем привлекает людей Joomla? Во-первых, она бесплатна. Во-вторых, она надежна, 99% взломов приходятся не на саму систему CMS, а на сторонние компоненты. И если находится уязвимость в коде Joomla – исправляется она просто молниеносно. В-третьих, огромное количество пользователей и разработчиков, использующих эту систему. Поддержку можно получить очень быстро. В-четвертых, гигантское количество сторонних плагинов, мамботов и модулей (устанавливаем на свой страх и риск) и естественно ШАБЛОНОВ.
Система всем хороша. Что же в ней появилось такого нового и хорошего?
Ответ – масштабируемость.
Мамботы, являющиеся по сути разного рода костылями и надстройками над оригинальным кодом движка исчезли. Вместо них появились плагины и стандарты на них. Как в все остальное в Joomla плагины ставятся, включаются-отключаются, обеспечивая необходимую безопасность, уровни доступа и как следствие порядок в CMS.

Интерфейс Joomla
Плагины играют роль обработчиков информации, благодаря им она обрабатывается или с их помощью создается администратором. Другие составляющие движка – модули и шаблоны. Модули являются источниками обработанной информации при генерировании отображаемой пользователю страницы, они отвечают за ее внешний вид и свойства. Шаблоны – решают то, каким образом модули (читай информация) представляются в дизайне. Все четко и понятно. Каждый элемент движка выполняет строго свою роль. В особенности остановимся на шаблонах, так как в Joomla работа с ними просто идеальна.

Традиционно считается что самым гибким решением является использование технологии Smarty в шаблонах. Для тех, кто не в курсе, поясню в чем она заключается. Шаблон представляет собой корневой файл, в котором подгружаются различные пхп-скрипты, которые в свою очередь состоят из двух частей – файлы дизайна и файлы php кода, отвечающие за вывод дизайна в тех или иных случаях (они тоже содержат в себе некоторый «стандартный html»). Недостаток заключается в том, что найти тот кусок «стандартного» кода в скрипте, который надо изменить очень тяжело – количество файлов в шаблоне достигает порядка 100 штук, и очень тяжело разобраться, что за что отвечает и в какой последовательности подгружается. Долгие эксперименты в конечном счете приводят к успеху и позволяет нам создать на движке с технологией Smarty абсолютно универсальное решение под наши нужды, но к сожалению требует достаточно долгого изучения структуры движка и кода каждого конкретного шаблона, впрочем как и знаний php.

Идея разработчиков Joomla проста и гениальна. 3 уровня доступа к настройкам отображения.
Все скрипты, отвечающие за отображение шаблона находятся в самом движке, а разработчики шаблонов придерживаются определенных правил. Шаблон при этом состоит из одного файла с html кодом и вставками маркеров Joomla. Например: Этот код обозначает, что в данном месте html кода надо вывести все модули, которые располагаются в админке в позиции right. Интересным свойством является style. Это первый уровень доступа к отображению. Каждая позиция дизайна имеет как минимум 4 типа отображения:

  • style=»table» модули выводятся в таблице
  • style=»horz» модули выводятся горизонтально (в таблице)
  • style=»xhtml» модули выводятся одном DIV_е, заголовки в H3
  • style=»rounded» модули выводятся четырьмя блоками DIV, вложенными друг в друга

Последний способ нужен для того, чтобы делать отображение модуля со скругленными углами или другими дизайнерскими наворотами (такую конструкцию легко расписать в CSS). Всякий код который вставляет Joomla имеет свой класс. Описываем в CSS то, что добавила Joomla в наш шаблон – и готово. Второй уровень доступа. Хотите изменить отображение какого-то конкретного модуля? Определенного меню (или даже пункта меню) или конкретного блока с баннерами. Нет проблем, заходим в админку, находим в менеджере модулей необходимый модуль, и в настройках приписываем ему какой-нибудь суффикс к классу. В результате в html-коде появится что-то вроде

. Описываем moduletable-suffix в CSS и отдельный модуль отображается так как нам нужно.

Третий уровень доступа. Если вы совсем извращенец, можно изменить сам скрипт, который отвечает за вывод того или иного компонента движка. И что самое главное: движок от этого не изменится. Просто берем в папке нашего шаблона делаем подпапку html, в него кидаем код того компонента, который хотим отредактировать (в отличае от технологии Smarty, код каждого компонента в Joomla хранится в одном файле), например com_content который отвечает за вывод основного содержимого. Изменяем его и вуаля, Joomla уже будет использовать не тот код, который лежит в ней, но тот, который лежит в вашем шаблоне.

Итак, Joomla предоставляет трехуровневую гибкость шаблона:

  • На уровне CSS определенных позиции в дизайне
  • На уровне каждого отдельного компонента
  • На уровне php кода

Такая гибкость мне позволила отредактировать шаблон вообще не углубляясь во внутреннее устройство CMS. И гибкость при этом потрясающая, и наглядность отличная – никакого php в шаблоне. А с ним я знаком плохо.

Что еще хорошего в новой Joomla?

  • Новая система SEF. Теперь для каждой категории и каждой статьи можно вручную прописать alias. Уже существуют плагины, которые делают это автоматически транслитом русского названия.
  • Редактирование параметров статьи Joomla

  • Возможность задать SEO параметры каждой статьи.
  • Код стал более грамотным и менее нагроможденным.
  • Правильное отображение заголовков страниц.
  • Загрузка файлов в Joomla

  • Поддержка Web 2.0, в частности очень удобный менеджер файлов. Joomla – единственная система, которая в Opera правильно загружает файлы под AJAX и генерирует сразу для них html код.
  • Разработан стандарт интеграции с другими решениями (больше никаких костылей и переходников).

Из недостатков я пока все же отмечаю игнорирование h1. Почему-то разработчики Joomla все еще выводят заголовок статьи в блоке с классом contentheading. Впрочем, этот недостаток я исправил за 2 минуты, быстро откопав данную строчку в коде компонента.

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

Результат моего знакомства с новой версии этой замечательной CMS таков: мне другая просто не нужна. Ждем плагинов, которые на уровне движка добавляют к ней свойства магазина.

Читайте также: