Возникла такая ситуация, на сайте два шаблона, нужно вывести новости в обоих шаблонах. Создаю два пункта меню - Блог категории, которые выводят одну и туже категорию и назначаю этим пунктам разные шаблоны.

Открываю ссылку в одном шаблоне - список выводится правильно, но ссылки на материалы в нем ведут на другой пункт меню, для которого назначен другой шаблон.

Файл route.php компонента материалов просто перебирает все пункты меню для компонента и для представления category и id категории выбирает id пункта меню для одного из  имеющихся, в данном случае для одного из двух.

Пришлось сделать изменения в файле components/com_content/helpers/route.php, что конечно жаль, но другого варианта в голову не пришло.

Добавил:

$active = $menus->getActive();
$template_style_id = $active->template_style_id;

и 

if ($item->template_style_id == $template_style_id) {
}

Вся измененная часть функции

protected static function _findItem($needles = null)

 теперь такая

self::$lookup = array();
 
$component = JComponentHelper::getComponent('com_content');
$items = $menus->getItems('component_id', $component->id);
 
$active = $menus->getActive();
$template_style_id = $active->template_style_id;
 
foreach ($items as $item)
{
 if (isset($item->query) && isset($item->query['view']))
 {
  $view = $item->query['view'];
  if (!isset(self::$lookup[$view])) {
   self::$lookup[$view] = array();
  }
 
  if (isset($item->query['id'])) {
   if ($item->template_style_id == $template_style_id) {
    self::$lookup[$view][$item->query['id']] = $item->id;
   }
  }
 }
}

Теперь должны выбираться только ссылки для текущего шаблона.

Чтобы сделать комментарий, нужно авторизоваться на сайте!