Як дізнатися, якщо користувач перебуватиме на головній сторінці сайту на Джумлі
Дуже часто, при розробці сайту на Джумлі, дизайн головної сторінки сайту відрізняється від внутрішніх сторінок (мабуть, майже завжди) і нам (розробникам) треба показувати якісь інформаційні блоки тільки на головній сторінці, при цьому не торкнувшись усіх інших. Безумовно, це можна зробити за допомогою модулів, прив’язавши їх лише до головної сторінки і відповідно лише на ній та показувати їх. Але якщо такий варіант нам не підходить? У такому разі ми можемо скористатися умовними конструкціями в темі, які допоможуть показати певний контент лише на головній сторінці сайту на Джумлі.
Слід зазначити, що ці умовні оператори відрізнятимуться для різних версій 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
Занятно. Подпишусь-ка я на RSS пожалуй
Я извиняюсь, что немного не в тему, а что такое RSS? и ка на него подписаться?
Извините если не туда, но как с админом сайта связаться?
Да, такой блог однозначно надо раскручивать сильнее – что бы как можно больше людей о нем узнали.
Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился
Спасибо, хорошая статья. Подписался.
Сенкс. Интересно, и вообще полезный у Вас блог
Что то слишком мудрено… И по-моему рассчитано на блогера чем на вебмастера
очень интересно но чичего не понятно