Переопределение макетов

Итак, для того, чтобы изменить вывод модуля нам необходимо скопировать файл макета из папки /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 предоставляет выбрать нужный шаблон для каждого конкретного модуля.

Названия макетов не должны содержать знаков подчеркивания.

2012-12-24 142837


Аналогичная возможность есть и для компонентов, Вам так же необходимо скопировать нужный макет из папки /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>


Для локализации добавим строки в файл \administrator\language\overrides\ru-RU.override.ini. Текстовая константа должна начинаться с COM_CONTENT_  или  JGLOBAL_ .

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, его совет стал ключевым моментом в решении проблемы.

 стоит дублировать файлы и в правильном наименовании, чтобы не слетело при устранении бага.