Alternative Menu Items
Use Alternative Menu Items Layout Overrides to apply an override to an article linked directly to the menu.
For example, you copied
/components/com_content/articles/views/tmpl/article/default.php to
/templates/your-template/html/com_content/article/newdefault.php
And you copied
/components/com_content/articles/views/tmpl/article/default.xml to
/templates/your-template/html/com_content/article/newdefault.xml
The matching .xml file tells Joomla that the override is an Alternative Menu Item.
Once you create this, you will see the a new Menu Item Type. In the example below, I created a new Menu Item Type called New Default Single Article.
To apply the Alternative Menu Item Type to an existing menu article link, open the article link and from the Menu Item Type field and click Select. Under the Articles category, you will see the new Menu Item Type you created.
To create a new article using the Alternative Menu Item Type, from the menu, click New and under the Articles category click the new Menu Item Type you created.
Matt says
Hi there,
I’ve tried this, and it works, but the new Menu Item Type just says “New Article”. and the link seems to be the same… what am I doing wrong?
Pat Fortino says
I think you have to modify the name in the xml file.
toufik says
hi, the layout override is missing and you can copy /components/com_content/articles/views/tmpl/article/default.php to
/templates/your-template/html/com_content/article/default.php and you add this code:
// Check for layout override
$active = $app->getMenu()->getActive();
if (isset($active->query[‘layout’])) {
$this->setLayout($active->query[‘layout’]);
} after line 14 or after $app.
Pat Fortino says
Not sure what you mean. That code is not in any templates in 2.0 or 3.0 but it works. I assume the check is coming from another file?
toufik says
hi,
I think is better that the code muss be in core joomla in /com_content/articles/views/article/view.html.php in display function after check for error.
I assume the check is coming from another file? yes from view.html.php
toufik says
the full code is:
// Check for layout override joomla 2.5
$active = $app->getMenu()->getActive();
if (isset($active->query[‘layout’])) {
$this->setLayout($active->query[‘layout’]);
$this->display();
return;
}
//
// Check for layout override joomla 3
$app = JFactory::getApplication();
$active = $app->getMenu()->getActive();
if (isset($active->query[‘layout’])) {
$this->setLayout($active->query[‘layout’]);
$this->display();
return;
}