Переопределить шаблон материала, в зависимости от выбранной категории joomla
Сам по себе шаблон можно переопределить для каждого материала - это есть из коробки.
А вот как сделать так, чтобы шаблон материала подхватывался в зависимости от выбранной категории joomla - это пока предусмотрено не было...
"Пока" - это когда joomla версии 3.6.
Автор данного решения SDKiller с joomlaforum.
Само решение.
Создаем свой макет блога категории (это многократно описано на всяких сайтах).
Далее создаем два шаблона материалов: item и альтернативный - одноименный созданному недавно макету категории, где item - переименованный дефолтный.
Содержимое файла default.php в данном случае:
<?php defined('_JEXEC') or die; $active = JFactory::getApplication()->getMenu()->getActive(); if ($active->query['option'] == 'com_content' AND $active->query['view'] == 'category' AND (!empty($active->query['layout']) AND $active->query['layout'] != 'blog')) { $tmp = explode(':', $active->query['layout']); //e.g 'atomic:catalog' $layout = $tmp[1]; //'0'-index is current template, '1'-index is category layout } else { $layout = 'item'; //renamed 'default' layout } $this->setLayout($layout); echo $this->loadTemplate();
Таким образом, если макет категории не блог, шаблон материала будем брать одноименный макету этой категории, в противном случае будет item.
У меня такой метод работает!
UPD: Могут быть непредсказуемые результаты если одной и той же категории будут назначены несколько пунктов меню (либо будет назначен пункт меню для категории и ещё пункт - отдельному материалу) - getActive() может выбрать не тот пункт, который хотелось бы ).
* Также обсуждались другие подходы к решению данной задачи, ссылка ниже!
Ссылки и благодарности
Решение взято с joomlaforum, тема: Переопределение шаблона блога категории и дальнейшее наследование в материалах