RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

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

Создание нескольких макетов для разных страниц сайта

Введение

В Joomla 1.5 было введено такое понятие как переопределение шаблонов (разметок) вывода. Версии Joomla начиная с 1.6 расширяют эти возможности, предоставляя Администратору больше контроля над отображением статей, контактов и прочих расширений. Существует 4 альтернативных типов макетов:

  1. Модуль
  2. Компонент
  3. Категория
  4. Пункт меню

Альтернативные типы макетов работают так же как и переопределение шаблонов вывода, но предоставляют больше контроля и обеспечивают больше возможностей. Рассмотрим каждый тип по отдельности.

Альтернативный макет модуля

Создание альтернативного макета очень похоже на создание переопределения шаблона вывода модуля. В обоих случаях нужно создать директорию «[Joomla root]/templates/<ваш шаблон>/html/<имя модуля>». На примере стандартного модуля авторизации и шаблона «Beez_20», директория будет выглядеть так — «[Joomla root]/templates/beez_20/html/mod_login/».

Существует два разных отличия между переопределением шаблона и созданием альтернативного макета. Первое, при переопределении шаблона вы должны были называть файл «default.php», чтобы соответствовать имени шаблона. И могли переопределить его только один раз. Для альтернативных макетов вы можете использовать любое имя, кроме основного файла (default.php). Единственное ограничение — имя файла не должно содержать никаких подчеркиваний. Это позволяет вам создавать сложные макеты, которые могут состоять из нескольких файлов. Исходный (начальный) файл макета не должен иметь подчеркиваний, а остальные файлы, которые могут вызываться из него должны содержать подчеркивание после имени. Например, у вас есть исходный файл «[Joomla root]/templates/beez_20/html/mod_login/xxx.php», остальные шаблоны, которые будут вызываться из него должны называться «[Joomla root]/templates/beez_20/html/mod_login/xxx_1.php» и т. д.

Второе важное отличие в том, что когда вы переопределяли шаблон, он вызывался автоматически, при отображении модуля. В Joomla 1.7 есть дополнительный параметр, который называется альтернативный макет:

Альтернативный макет модуля

Этот параметр содержит список файлов (без подчеркиваний), которые вы поместили в директорию с шаблоном (<ваш шаблон>/html/<имя модуля>/Список этих файлов). Вы также можете перевести название макета при необходимости. Для этого нужно добавить строчку вида:

TPL_BEEZ_20_MOD_LOGIN_LAYOUT_XXX="Альтернативный текст"

в файл локализации шаблона «[Joomla root]/language/ru-RU/ru-RU.tpl_beez_20.sys.ini», это действие переведет название макета файл «xxx.php» в «Альтернативный текст»

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

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

Альтернативные макеты компонента работают аналогичным образом как и модули, о которых говорилось выше. Файл также помещается в ту же директорию, как и при переопределении. На примере создания макета для материала и шаблона «Beez_20» это будет файл «[Joomla root]/templates/beez_20/html/com_content/article/xxx.php». Как и у модуля этот файл не должен называться как основной и не должен содержать подчеркиваний. Кроме того в этой директории не должно содержаться XML файлов с таким же именем как и макет (Это будет рассмотрено позже, при рассмотрении макета пункта меню).

Вы можете установить глобальное значение макета для всего компонента. Для этого в «Менеджере материалов» нажмите кнопку «Настройки» и поставьте соответствующее значение.

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

Это создаст глобальное значение, но отдельные материалы также смогут использовать и любые другие макеты.

Макет для отдельных материалов

Для перевода макета вы также должны добавить в файл локализации шаблона (ru-RU.tpl_beez_20.sys.ini) следующую строчку

TPL_BEEZ_20_COM_CONTENT_ARTICLE_LAYOUT_XXX="Альтернативный макет"

Вы можете создавать более одного файла для макета. Исходный файл не должен иметь подчеркивание, а дополнительные файлы должны содержать подчеркивание. Альтернативные макеты могут использоваться только при соблюдении двух правил:

  • Они были указаны в параметрах компонента.
  • Нет пункта меню для этого компонента. Например если вы используете один или несколько пунктов меню типа «Материал», то альтернативный макет для этого материала не будет использоваться. Это объясняется тем, что параметры пункта меню являются более приоритетными, чем параметры материала, и они будут перекрывать их.

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

Макеты для категории создаются также как для компонентов, разница будет лишь в директориях. Например, альтернативный макет для категории контактов шаблона «Beez_20» это будет директория «[Joomla root]/templates/beez_20/html/com_contact/category/xxx.php»

Вы также можете установить глобальное значение макета для категории, если это позволяет компонент:

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

Или выставить для нужной категории альтернативный макет:

Макет отдельной категории

Альтернативные макеты для категории, также как и для компонента, будут работать только в двух случаях:

  1. Они были указаны в глобальных параметрах или параметрах категории;
  2. Нет пункта меню, специально для этой категории.

Для материалов используется два основных макета — Блог и Список. Таким образом как и другие параметры теперь можно выбирать макет категории как глобально, так и для разных категорий отдельно.

Выбор макета в виде блога или списка

И вы можете контролировать, какую категорию и как выводить, при условии если не будет пункта меню на эту категорию.

Альтернативный макет пункта меню

Здесь есть очень важное отличие от других макетов. Для создания альтернативного макета пункта меню вы должны создать XML файл, имя которого будет совпадать с именем исходного макета. Например что бы создать альтернативный макет пункта меню для материала в шаблоне «Beez_20» нужно создать 2 файла в директории «[Joomla root]/templates/beez_20/html/com_content/article» — «myarticle.php» и «myarticle.xml». Если ваш макет будет состоять из нескольких файлов, можно добавить дополнительные файлы с подчеркиванием.

XML файл макета использует тот же формат что и основной XML файл для пункта меню. Это означает что вы можете создавать не только индивидуальные макеты, но изменять или создавать необходимые параметры в пункте меню (в данном случае для материала). Альтернативные пункты меню появляются при выборе типа меню

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

Альтернативные макеты пунктов меню работают также как и стандартные макеты пунктов меню.

Как было сказано выше альтернативные макеты пунктов меню более приоритетные, чем макеты компонентов и категорий.

XML файл будет следующего вида:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
  <layout title="TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE" 
         option="TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION">
    <help
      key = "JHELP_MENUS_MENU_ITEM_ARTICLE_SINGLE_ARTICLE"
    />
    <message>
      <![CDATA[TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC]]>
    </message>
  </layout>

Перевод пунктов меню осуществляется по следующему шаблону: «TPL_<template name>_<component>_<view>_<menu item name>_<tag type>»

Для этого примера

TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE="Заголовок"
TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION="Custom"
TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC="Описание"

это будет файл «[Joomla root]/language/ru-RU/ru-RU.tpl_beez_20.sys.ini»

Управление с помощью макета пункта меню

Как уже говорилось раньше, с помощью XML файлов можно менять основные и создавать дополнительные параметры. Вы должны учитывать, что если вы добавляете свои параметры, они будут доступны только в ваших макетах. Также вы можете переопределить параметры, которые заданы в шаблоне. Например? добавление в XML файл:

<fields>
  <field name="sitedescription"  
    type="text" 
    label="TPL_BEEZ2_FIELD_DESCRIPTION_LABEL"
    description="TPL_BEEZ2_FIELD_DESCRIPTION_DESC"
    filter="string" />
  </fields>

будет переопределять параметр «sitedescription» шаблона beez_20 (см. templateDetails.xml).

Смотрите также:
Комментарии (4) Добавить комментарий
  • Турал
    Турал
    23 Мая 2012, 18:05
     ↑  +2  ↓     ответ

    Можете подсказать, каким образом переопределить в шаблоне файл ru-RU.com_content.ini?

    Я помещяю его в /<template_name>/language/ru_RU/, даже описываю эту позицию в templateDetails.XML, но, буквально, "ноль реакции". Константа COM_CONTENT_PUBLISHED_DATE_ON не хочет изменяться.

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

  • Антон
    Антон
    11 Сентября 2012, 14:33
     ↑  0  ↓     ответ

    Отличный материал!!

    Спасибо, пригодилось в работе.

  • Сергей
    Сергей
    19 Ноября 2012, 15:40
     ↑  +2  ↓     ответ

    Присоединяюсь к вопросу Турал. Так же пытался переопределить языковые файлы, закладывая их в шаблон. И так же ноль реакции. Очень не хочется по новой переопределять константы после обновления. Если кто то знает ответ - подскажите плз.

    • ul.pagination
      ul.pagination
      14 Декабря 2013, 00:21
       ↑  0  ↓     ответ

      ul.pagination

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.