Как узнать, если пользователь находиться на главной странице сайта на Джумле.
Очень часто, при разработке сайта на Джумле, дизайн главной страницы сайта отличается от внутренних страницах (пожалуй, почти всегда) и нам (разработчикам) надо показывать какие-то информационные блоки только на главной странице, при этом, не затронув все остальные. Безусловно, это можно сделать с помощью модулей, привязав их только к главной странице и соответственно только на ней и показывать их. Но что если такой вариант нам не подходит? В таком случае, мы можем воспользоваться условными конструкциями в теме, которые помогут показать определенный контент, только на главной странице сайта на Джумле.
Следует отметить, что эти условные операторы будут отличаться для разных версий Joomla.
Joomla 1.0
В Joomla! 1.0.x возможно определить главную страницу следующим кодом:
<?php
if ($option == 'com_frontpage' || $option == '') :
?>
<div>Этот блок виден только на главной странице.</div>
<?php endif; ?>
Joomla 1.5
Но в Joomla! 1.5.x компонент com_frontpage уже отсутствует, поэтому тот же результат получаеться с помощью следующего кода:
<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) :
?>
<div>Этот блок виден только на главной странице.</div>
<?php endif; ?>
Этот код проверяет если текущий пункт меню является пунктом по умолчанию (то есть пунктом для главной страницы сайта на джумле).
Joomla 1.6, 1.7 and 2.5
Для версий джумлы 1.6/1.7/2.5 есть некоторые отличия, поэтому для них, в случае одноязычного сайта, следует использовать следующий код:
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) :
?>
<div>Этот блок виден только на главной странице.</div>
<?php endif; ?>
Для многоязычного сайта на Джумле главная страница зависит от текущего языка, поэтому нам нужно использовать следующий код:
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault( 'en-GB' )) :
?>
<div>Этот блок виден только на главной странице.</div>
<?php
elseif ($menu->getActive() == $menu->getDefault( 'fr-FR' )) :
?>
<div>Этот блок виден только на главной странице.</div>
<?php endif; ?>
Для многоязычного сайта на джумле, возможно, будет необходимо показывать определенные блоки на главных страницах для всех языков.
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
$lang = JFactory::getLanguage();
if ($menu->getActive() == $menu->getDefault($lang->getTag())):
?>
<div>Этот блок виден только на главной странице.</div>
<?php endif; ?>
На основе материалов с http://docs.joomla.org