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

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

Что такое блог категории думаю объяснять не стоит, но на всякий случай чтобы стало понятнее посмотрите на скриншот с небольшим примером того как могут выглядеть материалы выведенные в виде блога:

Пример вывода материалов категории в виде блога

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

Зачем переопределять макет блога категории?

Ответ на данный вопрос достаточно простой – чтобы сократить размер страницы либо кардинально поменять внешний облик макета блога категории на страницах сайта.

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

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

Файлы, отвечающие за макет блога категории

За макет блога категории отвечает сразу несколько файлов расположенных в папке /components/com_content/views/category/tmpl:

  • blog.php – основной макет для всей страницы целиком, включает заголовок пункта меню, заголовок и описание категории, метки категории, материалы в виде блога и пагинацию (тип пункта меню «Блог категории»). Кроме того для отображения каждого конкретного материала используется дополнительный файл blog_item.php.
  • blog_item.php – отвечает за макет материала в блоге. Выводит заголовок материала, рейтинг, краткое содержание, кнопку подробнее и так далее.
  • blog_children.php – отвечает за вывод подкатегорий.
  • blog_links.php – выводит заголовки материалов в виде обычных ссылок. Количество подобных ссылок можно указывать в параметрах макета блога.
  • default_articles.php – отвечает за вывод материалов в виде списка (тип пункта меню «Список материалов категории»), но в данный момент он нам не интересен.

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

Стандартные файлы, отвечающие за макет блога категории и их код

Прежде чем начать переопределение макета блога категории не лишним будет разобраться в коде оригинальных файлов, это поможет избежать ошибок при внесении в них изменений. Но для начала давайте скопируем оригинальные файлы (нам потребуются файлы blog.php и blog_item.php) с вышеупомянутой папки в папку /templates/имя_шаблона/html/com_content/category.

Файл blog.php отвечающий за макет блога категории в Joomla 3.8.1

Как я уже говорил файл blog.php отвечает за макет блога категории целиком – за отображение заголовка пункта меню (если используется), заголовка категории, списка материалов, меток, пагинацию и так далее.

Давайте откроем данный файл (с папки html/com_content/category текущего шаблона) и посмотрим на его код. В самом начале (строки с 1 по 30) идет информация по лицензии и авторских правах, следом за ней строка, отвечающая за безопасность и объявление переменных.

Далее начинается код, отвечающий за вывод контента. Первые 5 строчек отвечают за вывод заголовка страницы, если быть точнее, то в качестве такого заголовка будет выступать заголовок пункта меню (если установлено «показать»). Чтобы было понятнее, я решил внести комментарии в код и показать его в виде скриншотов:

Код файла blog.php отвечающий за отображение (или скрытие) заголовка пункта меню в макете блога категории

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

Код файла blog.php отвечающий за отображение (или скрытие) заголовка категории в макете блога Joomla 3

Далее отображаются (если установлено) метки категории:

Код отвечающий за вывод меток в блоге категории Joomla 3

Следом за метками идет (опять же если установлено в настройках) описание и изображение категории:

Код отвечающий за вывод описания и изображение категории в Joomla 3

Теперь начинается проверка на наличие в данной категории материалов, если материалов нет, то будет выведено соответствующее сообщение:

Проверка категории на наличие материалов, если материалов нет, то будет выведено сообщение об их отсутствие

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

В начале идет код, отвечающий за вывод материалов во всю ширину, их количество указывается в настройках макета блога:

Код отвечающий за вывод материалов в блоге Joomla 3 во всю ширину страницы

Следующий блок кода отвечает за вывод материалов в колонках, количество таких материалов и количество колонок так же указывается в настройках макета блога Joomla:

Код отвечающий за вывод материалов в виде колонок, количество колонок и материалов указывается в настройках макета блога

Завершается файл blog.php кодом, который отвечает за вывод материалов в виде обычных ссылок, которые идут после главных материалов, а в самом конце файла идет код, отвечающий за пагинацию (навигация по страницам):

Блок кода отвечающий за вывод материалов в виде ссылок и пагинацию

Файл blog_item.php отвечающий за внешний вид материалов в блоге

Следующий файл, который формирует макет страницы блога, называется blog_item.php. С помощью данного файла задается внешний облик материалов – выводится изображение вступительного текста, сам текст, кнопка подробнее, дополнительная информация, такая как дата создания, автор и прочее.

Как и в предыдущем файле в самом начале файла blog_item.php содержится информация об авторских правах, и объявляются необходимые переменные. Далее идет основной код, отвечающий за внешний вид материала.
Чтобы разобраться, что к чему смотрите на скриншот:

Содержимое файла blog_item.php который отвечает за внешний вид материалов в блоге категории

На скриншоте показан не полный код, но все что ниже нас не интересует. Для того чтобы изменить внешний облик выводимых материалов мы будем работать исключительно с этими строками кода. Файлы blog_children.php и blog_links.php рассматривать более детально не вижу смысла, их переопределяют крайне редко.

На этом, пожалуй, я закончу статью, она получилась довольно большой. В следующей части статьи я расскажу, как редактировать макет блога категорий и в частности файлы blog.php и blog_item.php для придания уникальности блогу категорий.

 

Добавить комментарий


Комментарии   

Boris
0 #1 Boris 20.06.2018 16:54
Отличная статья! Подскажите пожалуйста как теперь поменять все это, чтобы описание категории отображалось не сверху а снизу, то есть после материалов?
Цитировать