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

Spread the love

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

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

    Занятно. Подпишусь-ка я на RSS пожалуй

  2. Володя says:

    Я извиняюсь, что немного не в тему, а что такое RSS? и ка на него подписаться?

  3. Влад says:

    Извините если не туда, но как с админом сайта связаться?

  4. Алекс says:

    Да, такой блог однозначно надо раскручивать сильнее – что бы как можно больше людей о нем узнали.

  5. Димон says:

    Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился

  6. webmaster says:

    Спасибо, хорошая статья. Подписался.

  7. Виталий says:

    Сенкс. Интересно, и вообще полезный у Вас блог


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