Каждый кто работает с CMS Joomla знает как часто бывает нужно изменить или запретить вывод основного контента на главной странице, задать условия для вывода модулей и т.д.
Чтобы было понятно и нагляндно, будем рассматривать стандартный com_content.
Для начала возьмем пример получения таких параметров как:
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
- Получем текущий ItemID, по умолчанию и если не определен "1"
$option = JRequest::getVar('option', null);
- Получаем название текущего компонента, в нашем случае это com_content или NULL
$view = JRequest::getVar('view', null);
- Получаем значение текущеей view
Значение, которые может принимать $view (так же может быть добавлен параметр layout):
- section – в том случае, если тип ссылки будет «содержимое раздела»
- category – для типа ссылки «содержимое категории» или же при переходе из раздела «содержимое раздела», либо же тип «блог-содержимое категории»
- article – полный текст маткриала
Сейчас мы рассмотрим различные ситуации в которых нам понадобятся условия Joomla. Возьмем HTML код по умолчанию (стандартный трехколоночный макет без хедера и футера, по середине расположен pathway и вывода компонентов, с левой и правой позиции модулей).
Код:
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$document
= & JFactory::getDocument();
$user = & JFactory::getUser();
1. Если В позиции RIGHT ничего не опубликовано, то скрывать нужный нам модуль на сайте.
Код:
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php if($this->countModules('right')) : ?>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php else: ?>
<div class="centercolumn_full"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<?php endif; ?>
2. Скрываем pathway (путь на сайт) на главной, но показываем на внутренних.
Код:
<div class="leftcolumn">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<div class=”centercolumn”>
<?php if ($Itemid != '1') { ?>
<jdoc:include type="modules" name="breadcrumb" />
<?php } else { } ?>
<jdoc:include type="component" /></div>
<div class="rightcolumn">
<jdoc:include type="modules" name="right" style="xhtml" />
</div>
3. Добавляем в центральную часть модуль (позиция user1), который будет выводить информацию под текстом статьи, но показывать ее только в режиме просмотра полного текста.
Код:
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn">
<jdoc:include type="modules" name="breadcrumb" />
<jdoc:include type="component" /></div>
<?php if (($option == 'com_content') && ($view == 'article')) { ?>
<jdoc:include type="modules" name="user1" style="xhtml" />
<?php } else {} ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
4. Полностью показываем правую колонку только для авторизованного пользователя, а гости видят лиш левый блок и основной контент.
Код:
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<?php
$user = & JFactory::getUser();
if ($user->get('guest') == '1') { } else { ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
<?php } ?>
5. Пользователям, которые авторизированы показываем приветствие с его именем в правой колонке.
Код:
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div> <div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div> <?php $user = & JFactory::getUser(); echo ‘Привет тебе, о великий '.$user->username'; ?> <div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
6. Выводим заголовок текущей страници в любом месте шаблона.
Код:
<div class="leftcolumn"> <?php $document = & JFactory::getDocument(); echo $document->title; ?> <jdoc:include type="modules" name="left" style="xhtml" /></div> <div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div> <div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>
7. Проверка на главную страницу.
Код:
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
// на главной
} else {
// тут всё что не на главной
}
//не показывать на главной
<?php if ($menu->getActive() !== $menu->getDefault()) : ?>
//контент или модуль
<?php endif; ?>
Логаут ссылкой виден только зареганым юзерам (joomla 2,5 найдено тут)
<?php
$user = & JFactory::getUser();
if ($user->get('guest') == '1') { } else {
$sess = JUtility::getToken();
echo 'You are logged in as <b>'.$user->username.'</b> (<a href="/index.php?option=com_users&task=user.logout&'.$sess.'=1">Logout</a>)';
} ?>
P.S.: Все необходимые параметры лучше всего объявить в начале в index.php. Например, сразу после <body>вставить
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$document = & JFactory::getDocument();
$user = & JFactory::getUser();
Источник: http://poltor.com/blog/usloviya-v-shablonayah-joomla.html

