Делаем разный вывод для категорий
Иногда бывают ситуации когда нужно, допустим, разные категории выводить разными шаблонами. Конечно можно создать отдельный пункт меню с этими категориями и настроить нужные параметры в них, но таким образом структура вывода не будет меняться. Можно лишь контролировать что выводить, но не где и как. Здесь приводиться простой способ для того как это можно сделать на уровне шаблонов вывода стандартного 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
Комментарии
07.12.2011 11:34
Как вывести в категории дополнительный столбец, чтобы в списках контактов вводилась ещё картинка(изображение) присвоенная контакту?
Заранее спасибо)
Материал очень полезен.
05.04.2016 11:45
RSS лента комментариев этой записи