Переопределение шаблонов или альтернативные макеты в Joomla
Переопределение макетов
Итак, для того, чтобы изменить вывод модуля нам необходимо скопировать файл макета из папки /modules/имя_модуля/имя_макета.php в templates/имя_шаблона/html/имя_модуля/имя_макета.php.На примере модуля mod_login и шаблона beez_20, это будет выглядеть следующим образом: скопировать default.php из /modules/mod_login/tmpl в /templates/beez_20/html/mod_login.
Теперь Вы можете редактировать макет в папке шаблона, и Joomla будет использовать его вместо макета из модуля. Также, если необходимо, чтобы модуль имел несколько видов оформления, можно создать несколько макетов в папке шаблона, например, default2.php и default3.php. Joomla предоставляет выбрать нужный шаблон для каждого конкретного модуля.
Названия макетов не должны содержать знаков подчеркивания.
Аналогичная возможность есть и для компонентов, Вам так же необходимо скопировать нужный макет из папки /components/имя_компонента/views/папка_макета/tmpl/имя_макета.php в /templates/имя_шаблона/html/имя_компонента/папка_макета/имя_макета.php.
На примере модуля com_content и шаблона beez_20, это будет выглядеть следующим образом: скопировать нужный файл(ы) макета из /components/com_content/views/article/tmpl в /templates/beez_20/html/com_content/article/.
Дополнительные возможности
Локализация макетов
При выборе макета в списке отображаются названия файлов макетов, Вы можете перевести их, добавив соответствующие строки в файл локализации шаблона. В нашем случае, необходимо добавить строки:TPL_BEEZ_20_MOD_LOGIN_LAYOUT_DEFAULT2="Вариант два"
TPL_BEEZ_20_MOD_LOGIN_LAYOUT_DEFAULT3="Вариант три"
в файл /language/ru-RU/ru-RU.tpl_beez_20.sys.ini.
Сложные макеты
Вы можете создавать сложные макеты, состоящие из нескольких макетов. Эту возможность можно использовать, например, при выводе категории материалов, чтобы не мешать верстку категории с версткой материалов.Сложные макеты состоят из главного и зависимых макетов, содержащих в своем названии имя главного, например, category.php, category_item.php, category_links.php (соблюдение такого формата наименования макетов — обязательно). Теперь мы можем в любом месте главного макета category.php вывести зависимый шаблон с помощью конструкции
echo $this->loadTemplate('item');
Макет для пункта меню
Кроме самого вывода компонента, Вы можете переопределить макет пункта меню. Макеты пунктов меню отличаются от созданных нами раннее, наличием совпадающего с ним по имени xml файла. Определим новый макет пункта меню, для этого создадим xml файл для ранее созданного макета default3.php и назовем его соответственно — default3.xml.Пункт меню в xml файле определяется с помощью конструкции
<layout title="TPL_BEEZ_20_COM_CONTENT_ARTICLE_VIEW_DEFAULT_TITLE1" option="com_content_article_view_default_option1">
<help
key = "JHELP_MENUS_MENU_ITEM_ARTICLE_SINGLE_ARTICLE1"
/>
<message>
<![CDATA[TPL_BEEZ_20_COM_CONTENT_ARTICLE_VIEW_DEFAULT_DESC1]]>
</message>
</layout>
TPL_BEEZ_20_COM_CONTENT_ARTICLE_VIEW_DEFAULT_TITLE1="Мой шаблон материала"
TPL_BEEZ_20_COM_CONTENT_ARTICLE_VIEW_DEFAULT_DESC1="Отображает отдельный материал"
Также с помощью макета меню Вы можете определить новые и переопределить существующие параметры, добавим два параметра: некоторый текст и его цвет
<fieldset name="basic1"
label="COM_CONTENT_ATTRIBS_ARTICLE_SETTINGS_LABEL1">
<field
name="my_parameter_text"
type="text"
label="JGLOBAL_MY_PARAMETER_TEXT_LABEL"
description="JGLOBAL_MY_PARAMETER_TEXT_DESC">
</field>
<field
name="my_parameter_color"
type="list"
label="JGLOBAL_MY_PARAMETER_COLOR_LABEL"
description="JGLOBAL_MY_PARAMETER_COLOR_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="01900F">Зеленый</option>
<option value="F00">Красный</option>
</field>
</fieldset>
COM_CONTENT_ATTRIBS_ARTICLE_SETTINGS_LABEL1="Настройки параметра"
JGLOBAL_MY_PARAMETER_TEXT_LABEL="Текст параметра"
JGLOBAL_MY_PARAMETER_TEXT_DESC="Введите текст параметра"
JGLOBAL_MY_PARAMETER_COLOR_LABEL="Цвет текста параметра"
JGLOBAL_MY_PARAMETER_COLOR_DESC="Выберите цвет текста параметра"
Для получения значения параметра в файле шаблона используется конструкция
$this->params->get('my_parameter_text');
$this->params->get('my_parameter_color');
Имеется баг при выводе com_content/categories.
Методика не срабатывает, требуется следующий костыль:Файлы нужно было назвать simplecatalog.php, simplecatalog_items.php, catalog.xml (simple - название шаблона).
С Joomla работаю недавно, в тонкости не посвящен. Возможно пути и имена файлов можно где-то настроить или это особенность Joomla 2.5.9.
Все заработало, всем спасибо. Особенно fbr, его совет стал ключевым моментом в решении проблемы.
стоит дублировать файлы и в правильном наименовании, чтобы не слетело при устранении бага.