Делаем разный вывод для категорий

01/10/2010 обновлено 02/10/2010 Документация Joomla 1.5

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

Рассмотрев структуру стандартного компонента com_content  в 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, то соответсвенно манипуляции нужно проводить с ним. Можно добавить в него нужное условие для проверки категории. После проверки запрета прямого доступа добавляем:

<?php // no direct access
defined('_JEXEC') or die('Restricted access');
//Задаем ID категорий
$categories = '3,1,31';
//Выбираем категории в массив
$categories = explode(',', $categories);
//Проверяем на соответствие категории и загружаем нужный шаблон
for ($i = 0; $i < count($categories); $i++) {
if ($this->items[0]->catid === $categories[$i]) {
$this->_layout = 'myblog';
$this->display();
$check = true;
break;
}
}
// Если не совпадает условие выводим обычный шаблон
if (!isset($check)) :
$cparams =& JComponentHelper::getParams('com_media');
?>

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

<?php endif; ?>

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

В переменную $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.


12 

Комментарии   

 
0 Vlad
07.12.2011 11:34
Здравствуйте!
Как вывести в категории дополнительный столбец, чтобы в списках контактов вводилась ещё картинка(изображение) присвоенная контакту?
Заранее спасибо)
Материал очень полезен.
 
 
0 Дмитрий
05.04.2016 11:45
А как такое сделать для Joomla 3.5 ?