Каждый кто работает с 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