Дуже часто, при розробці сайту на Джумлі, дизайн головної сторінки сайту відрізняється від внутрішніх сторінок (мабуть, майже завжди) і нам (розробникам) треба показувати якісь інформаційні блоки тільки на головній сторінці, при цьому не торкнувшись усіх інших. Безумовно, це можна зробити за допомогою модулів, прив’язавши їх лише до головної сторінки і відповідно лише на ній та показувати їх. Але якщо такий варіант нам не підходить? У такому разі ми можемо скористатися умовними конструкціями в темі, які допоможуть показати певний контент лише на головній сторінці сайту на Джумлі.

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

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

  2. Володя :

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

  3. Влад :

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

  4. Алекс :

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

  5. Димон :

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

  6. webmaster :

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

  7. Виталий :

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

  8. dimon :

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

  9. Frank :

    очень интересно но чичего не понятно

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.