Получать рассылку по электронной почте

Введите свой email-адрес:

Delivered by FeedBurner

Навигация

Переопределение шаблонов и создание альтернативного макета Joomla

Переопределения шаблонов вывода Joomla!

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

Переопределить шаблоны можно двумя способами: путем копирования папок из соответствующих разделов CMS в html, основную папку для переопределения или через админку.

Рассмотрим структуру папок произвольного модуля.  Если мы откроем любой модуль из папки modules в корне сайта, то увидим примерно такую структуру

Шаблоны вывода, применяемые по умолчанию для модуля находятся в папке tmpl, оттуда их  надо скопировать  в папку html своего шаблона сайта по адресу /templates/ваш шаблон/html/название модуля (у меня указан шаблон nikel_template).

Теперь давайте рассмотрим из каких папок состоит компонент, на примере com_content (компонент вывода Контента).

Здесь структура немного сложнее – нам нужна папка views (Виды), в которой в свою очередь находятся папки для отдельной статьи (article), категорий(categories) и отдельной категории(category), представляющие особый интерес для нас.

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

Получается что для переопределения отображения любого вида компонента com_content (например article, category и т.п.) в шаблоне сайта нужно создать папку html/com_content/имя вида/ и скопировать  туда файлы из components/com_content/views/имя вида/tmpl/ .

К примеру, для категории копируем файлы находящиеся в components/com_content/views/category/tmpl/  и вставляем в папку html/com_content/category/

Но лучше пойти более простым путем и воспользоваться функцией переопределения из панели управления.

Посмотрим, что здесь доступно для нас. В первой колонке указаны  типы модулей, mod_articles_latest – последние новости, mod_articles_popular – популярное. Во второй колонке – папки с компонентами, открывая их можно выбирать, что именно переопределять.

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

Рассмотрим компонент Контент, поскольку он используется чаще всего.

Щелкнем по папке com_content и увидим, что в ней находится много чего годного для переопределения, наибольший интерес вызывают пункты категория (в ней содержатся стандартные шаблоны блога категории и списка материалов), а также отдельная статья. При нажатии на них получим сообщение об успехе и указание, куда именно создано переопределение.

Перейдем в папку по указанному пути (сначала в папку категории), там мы увидим такие файлы.

Файлы начинающиеся на blog отвечают за вывод блога категории, а default соответственно за вывод таблицы со списком материалов категории. Давайте откроем, к примеру, файлы блога категории и посмотрим из чего они состоят.

Начнем с blog.php

 

С помощью  $this ->loadTemplate('item') здесь подключается вывод разметки отдельной статьи блога (в виде краткой новости), она находится в blog-item.php(приведу этот код).

Если теперь просмотреть эту разметку, то вместо вывода непосредственно изображения краткой новости(введения), тегов, инфоблоков статьи и т.д. мы увидим конструкции типа

JLayoutHelper::render('joomla.content.intro_image', $this->item)

В них, с помощью класса  JLayoutHelper как раз таки выводится разметка содержащаяся в макетах(layouts), о которых мы упоминали ранее.

joomla.content.intro_image – это ни что иное как путь, по которому находятся файлы макетов. По умолчанию это /layouts/joomla/content.Чтобы редактировать их, нужно сделать переопределение макета content.

По адресу \templates\ваш шаблон\html\layouts\joomla\content будут находиться все переопределенные макеты.

Переопределения вывода инфоблока статьи (где перечислены автор, дата создания, категория и т.п.) будет во вложенной папке info_block.

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

Альтернативный макет делается почти также как переопределение. Сначала мы можем выполнить переопределение макета модуля или компонента через админку. Если вы ранее делали переопределение, то создадутся копии этих файлов c датой. Теперь на нужно открыть папку с этими файлами и переименовать их. Например так.

Мы переименовали файл default для  mod_banners (Баннеры) и теперь maket.php –это и есть альтернативный макет для нашего модуля. Чтобы применить его, нужно зайти в настройки модуля и выбрать в выпадающем списке maket.

После сохранения изменений  к модулю Баннеры применится альтернативный макет maket.

Чтобы убедиться, что именно он применяется, для mod_banners внесем небольшие изменения в код файла, добавим в maket.php обертку div c классом wrapper.

Обновив страницу в браузере и нажав правой кнопкой мыши Исследовать элемент, мы увидим, что div class=”wrapper” действительно появился, все работает!

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

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

1.Делаем переопределение (нажимаем com_content и выбираем  category или  article).

2.Переименовываем названия .Например, для блога категории заменим blog на blog2 (после нижнего подчеркивания названия файлов сохраним  как в оригинале). Для отдельного материала default заменим на blogarticle.

3.В настройках категории (откройте любую категорию и ее вкладку параметры) выбираем свой макет и сохраняем

4.Для материала имеется возможность задать его глобально Менеджер материалов -> Материалы (тогда он применится для всех статей сразу) или в отдельной статье (на вкладке Отображение).

 

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

Приведу простой пример. На сайте есть раздел Events в котором материалы выводятся как блог категории. В настройках пункта меню Events будет задано Тип меню – блог категории.

В качестве шаблона для вывода используются стандартные файлы движка Joomla в папке /components/com_content/views/category/tmpl

Мы видим, что также здесь присутствует файл blog.xml. Скопируем их в свою папку html/com_content/category/ и переименуем на свой вкус, у меня это ourblog.

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

Заменим на BLOG на OURBLOG.

COM_CONTENT_CATEGORY_VIEW_OURBLOG_TITLE =”Наш блог категории”
COM_CONTENT_CATEGORY_VIEW_OURBLOG_OPTION =”Наш блог”
COM_CONTENT_CATEGORY_VIEW_OURBLOG_DESC =”Описание нашего блога”

Это языковые константы, которые  будут выводится как описание вновь созданного блога. Их можно определить в файле /language/ru-RU/ru-RU.tpl_ваш шаблон.ini (/language/ru-RU/ru-RU.tpl_protostar.ini)

Теперь зайдем в пункт меню Events и выберем Материалы – Наш блог категории. Сохраняем.

Таким образом, мы применили альтернативный макет блога категории для пункта меню Events.

На этом, пожалуй, и все, спасибо за внимание.

Понравилась статья?
Подпишитесь на RSS по e-mail
Поделитесь в социальных сетях
Вы можете также посмотреть
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*