Переопределить шаблон материала, в зависимости от выбранной категории 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() может выбрать не тот пункт, который хотелось бы ).

* Также обсуждались другие подходы к решению данной задачи, ссылка ниже!