Как узнать, если пользователь находиться на главной странице сайта на Джумле.

Очень часто, при разработке сайта на Джумле, дизайн главной страницы сайта отличается от внутренних страницах (пожалуй, почти всегда) и нам (разработчикам) надо показывать какие-то информационные блоки только на главной странице, при этом, не затронув все остальные. Безусловно, это можно сделать с помощью модулей, привязав их только к главной странице и соответственно только на ней и показывать их. Но что если такой вариант нам не подходит? В таком случае, мы можем воспользоваться условными конструкциями в теме, которые помогут показать определенный контент, только на главной странице сайта на Джумле.

Следует отметить, что эти условные операторы будут отличаться для разных версий 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

9 Комментария(ев) для “Как узнать, если пользователь находиться на главной странице сайта на Джумле.”



  1. dimon says:

    Что то слишком мудрено… И по-моему рассчитано на блогера чем на вебмастера


Оставьте комментарий