Свой шаблон для категории Joomla

Взято отсюда. Для себя и других. Автору большое спасибо.

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

Рассмотрев структуру стандартного компонента com_content в Joomla, скопируем файлы вывода шаблонов категорий в наш шаблон Joomla, если их еще там нет. Рассмотрим шаблон вывода блога категории:

{root}\templates\{ШАБЛОН}\html\com_content\category\blog.php — начальный шаблон

{root}\templates\{ШАБЛОН}\html\com_content\category\blog_item.php — шаблон материала

{root}\templates\{ШАБЛОН}\html\com_content\category\blog_links.php — шаблон ссылок на следующие материалы

Первым будет загружать шаблон вывода blog.php, который в свою очередь использует два других шаблона. Для решения задачи не понадобиться затрагивать файлы ядра Joomla, а будут использоваться только шаблоны.

Так как первым будет загружаться blog.php, то соответсвенно манипуляции нужно проводить с ним. Можно добавить в него нужное условие для проверки категории Joomla. После проверки запрета прямого доступа добавляем:

[code language=»php»]items[0]->catid === $categories[$i]) {
$this->_layout = ‘myblog’;
$this->display();
$check = true;
break;
}
}
// Если не совпадает условие выводим обычный шаблон
if (!isset($check)) :
$cparams =& JComponentHelper::getParams(‘com_media’);
?>[/code]

И в конце файла закрываем условие:

[code language=»php»][/code]

Разберём немного код:

В переменную $categories задаем ID категорий, которые нужно выводить отдельным шаблоном, через запятую. Дальше соответсвенно это все дело упорядочиваем в массив и выбираем первый элемент, для того чтобы определить выводимую категорию. Затем сравниваем эту категорию с заданными в переменной $categories и если находиться совпадение устанавливаем наш шаблон и выводим его. Если совпадений не найдено, то переменная $check не устанавливается и выводится обычный шаблон blog.php.

Все что осталось сделать это создать в той же директории файлы нашего шаблона:

{root}\templates\{ШАБЛОН}\html\com_content\category\myblog.php — начальный шаблон

{root}\templates\{ШАБЛОН}\html\com_content\category\myblog_item.php — шаблон материала

{root}\templates\{ШАБЛОН}\html\com_content\category\myblog_links.php — шаблон ссылок на следующие материалы

Таким образом можно контролировать шаблоны вывода для разных категорий, не затрагивая ядро Joomla.

В WordPress это реализуется очень просто: достаточно создать копию шаблона category.php и  добавить к нему слаг (англоязычное системное название рубрики) от необходимой рубрики. Например: category-news.php будет использоваться при отображении постов рубрики со слагом news.