Начиная с Joomla 1.6 появилась возможность для любого компонента делать альтернативные макеты. Это достаточно подробно рассматривается во многих источниках в Интернете, поэтому часть проблемы я рассмотрю обобщённо, и уделю больше внимание тому, что вызвало трудности у меня при работе с альтернативными макетами. Как обычно и делается, для примера мы возмём компонент com_content. К примеру, нам надо сделать альтернативный макет конкретной статьи. Для этого в каталоге своего шаблона создаются ряд вложенных каталогов, чтоб в итоге получилось html/com_content/article. Узнать имя папки просто. Для этого достаточно посмотреть каталог /components/com_content/views.
Далее мы начнём создавать свой макет. Его удобно делать на основе стандартного макета компонента. Он находится в папке /components/com_content/views/article/views. Скопируйте оттуда все файлы .php (не трогая пока xml) в свою папку html/com_content/article. Я сделаю это на примере шаблона Atomic. Для демонстрации я просто добавлю в стандартный макет дополнительную строчку "Добавлено Михаилом Крамером". Для того, чтобы не заместить стандартный макет компонента, а создать возможность выбора, default.php надо переименовать во что-то другое. К примеру, в mike.php ? Также файл default_links.php следует переименовать в mike_links.php. Итак, в файле mike.php я после строки
<div class="item-page<?php echo $this->pageclass_sfx?>">
добавлю свою глубокомысленную надпись:
<p style='font-size: 24px; color: red; text-transform: uppercase;'>Добавлено Михаилом Крамером</p>
Теперь при создании новой статьи появится возможность выбора альтернативного макета (во вкладке "Параметры отображения материала"):
Выбрав наш новый макет и сохранив статью, мы увидим результат:
Теперь подходим к главному вопросу. Вопрос актуален только для Joomla 2.5, в Joomla 3 такой проблемы нету. Об этом, в принципе, сказано в документации, однако многие (и я в том числе) встречаются с этой трудностью. Создадим теперь пункт меню для этой статьи, и вместе с ним короткий путь /interest. И наблюдаем интересную ситуацию - если в урле мы указываем сомпонент и номер статьи, т.е. переходим по обычному меню, то видим, что наш макет сработал, а если переходим из меню или по краткому пути, то, как говорится, ни черта не работает:
Вот эта и есть не самая приятная особенность Joomla 2.5. Альтернативные макеты, созданные в соответствии с предыдущей частью статьи, работают только если для данной страницы нету пункта меню. А что делать, если всё таки нужно вывести альтернативный макет? Тогда нужно создать то, что называется "альтернативный макет пункта меню". Для этого нам необходимо добавить xml-файл с именем mike.xml. Структура XML-файла достаточно сложна и громоздка, но к счастью мы можем поспользоваться файлом default.xml из /components/com_content/views/article/views. Скопируйте его в подкаталог html/com_content/article вашей темы, переименуйте в mike.xml и измените первые строки следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="Статья в стиле Mike" option="com_content_article_view_default_option">
Остальной файл оставьте неизменным.
Теперь вы сможете выбрать новый тип меню Joomla:
Назначив именно такой тип меню нашей статье, мы получим желаемый результат - по ссылке /interest будет выводится наш макет: