Возникла такая ситуация, на сайте два шаблона, нужно вывести новости в обоих шаблонах. Создаю два пункта меню - Блог категории, которые выводят одну и туже категорию и назначаю этим пунктам разные шаблоны.
Открываю ссылку в одном шаблоне - список выводится правильно, но ссылки на материалы в нем ведут на другой пункт меню, для которого назначен другой шаблон.
Файл 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;
}
}
}
}
Теперь должны выбираться только ссылки для текущего шаблона.