Переопределения

Если экспериментов со стилями, CSS и файлами шаблонов вам недостаточно, то, похоже, пришло время ознакомиться с переопределением1. В Joomla! есть две реализации переопределения: переопределение в шаблоне и альтернативные макеты.

Переопределение в шаблоне

Предположим, что вы хотите изменить верстку или содержание страницы вывода результатов поиска. У [традиционного] компонента поиска есть макет по умолчанию для этой страницы — файл «default.php». Он храниться в папке /components/com_search/views/search/tmpl/. Благодаря коду и тексту в этом файле страница компонента выглядит именно так, как она выглядит. Предлагаю добавить в него что-нибудь от себя и сохранить. Результат будет виден сразу. Я добавил в двенадцатую строку следующее:

<strong>Вот мои изменения :)</strong>

Результат — на рис. 1.

Изменения на странице компонента поискаИзменения на странице компонента поиска

Рис. 1. Изменения на странице компонента поиска.

Этот эксперимент — отличное средство мотивации, потому что результаты видны сразу и не исчезают, если выбрать другой шаблон. Однако, с практической точки зрения подобный способ не оправдан, потому что после следующего обновления CMS внесенных вами изменений вы уже не увидите.

Альтернатива подобному решению — создание переопределения в шаблоне. Создается переопределение следующим образом. В папке по адресу templates/папка_активного_шаблона/html/ создается папка «com_search», а в ней еще одна — «search». Вместо сохранения в исходной папке, «default.php» сохраняется в папке «search». Изменения в файле-оригинале отменяются. Результат — тот же, но достигается он без изменения кода компонента. Отличный способ!

Система переопределений появилась в полуторной версии Joomla, в 2007 году, и отлично себя зарекомендовала.

Альтернативные макеты

В версии 2.5 есть еще один, более продвинутый способ переопределения — альтернативные макеты. Уверен, что вы обратили внимание на поле для их выбора на страницах редактирования статей, а также на страницах настроек модулей и категорий (рис. 3).

Зачем нужны альтернативные макеты? Представьте себе, что вы администрируете сайт, шаблон которого предполагает три варианта вывода материалов: статья, страница товара и страница книги. Все, что требуется, — это выбрать тот, который нужен вам. Отличная функция, не правда ли? Безусловно. И практика это подтверждает.

Для создания альтернативного макета, как и для переопределения в шаблонах, необходимо создать для компонента или модуля папку, название которой будет совпадать с названием папки файла-оригинала [например, com_content]. В ней — папку для варианта представления [например, article]. Очевидно, что файл альтернативного макета должен называться иначе, чем файл, на основе которого он создан. В противном случае он будет восприниматься системой как файл переопределения. Также, само собой разумеется, что он не будет применяться автоматически [т. е. его необходимо выбирать].

Для альтернативных макетов можно создавать собственные типы пунктов меню (рис. 2). Набор параметров, значения которых будут задаваться на страницах редактирования «альтернативных» пунктов, формируется при помощи файлов в формате XML с такими же названиями как и у файлов альтернативных макетов.

Тип пункта меню для альтернативного макетаТип пункта меню для альтернативного макета

Рис. 2. Тип пункта меню для альтернативного макета.

Создание «альтернативных» типов пунктов меню — занятие, требующее значительного опыта. Эта функция востребована не столько начинающими, сколько разработчиками шаблонов.

Выбор альтернативных макетов в интерфейсе создания-редактирования статьейВыбор альтернативных макетов в интерфейсе создания-редактирования статьей

Рис. 3. Альтернативные макеты на страницах создания/редактирования статей.


1 Переопределение — применение альтернативных параметров вместо параметров по умолчанию.