Хитрости в шаблонах Joomla 1.5. Часть 1: Про позиции модулей
Я начинаю цикл статей, в которых буду рассказывать об реализации интересных задач как тривиальный так и не очень в шаблонах для Joomla 1.5. Оформление статьи будет в виде FAQ'а: чтобы вам мало читать, а мне мало писать. Очень буду стараться переходить от простого к сложному.
Итак, приступим:
1) Как скрыть позицию модуля если в ней нет активных модулей?
<?php if($this->countModules('user1') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
1.1) А если позиций несколько?
<?php if($this->countModules('user1 or user2 or user3') : ?>
<div id="users">
<?php if($this->countModules('user1') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
<?php if($this->countModules('user2') : ?>
<div id="user2">
<jdoc:include type="modules" name="user2" style="xhtml" />
</div>
<?php endif ?>
<?php if($this->countModules('user3') : ?>
<div id="user3">
<jdoc:include type="modules" name="user3" style="xhtml" />
</div>
<?php endif ?>
</div>
<?php endif ?>
2) Как отобразить позицию только для авторизованного пользователя?
<?php
$user =& JFactory::getUser();
?>
<?php if(!$user->guest) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
2.1) А наоборот, только для гостя?
<?php
$user =& JFactory::getUser();
?>
<?php if($user->guest) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
2.2) Хорошо, а если я хочу вывести позицию для определённой группы, например для «Author»?
<?php
$user =& JFactory::getUser();
?>
<?php if($user->get('usertype') == 'Author') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
2.3) Замучал уже наверное, ну а всё же, а как для конкретного пользователя вывести, например для пользователя с ником «qwerty»?
<?php
$user =& JFactory::getUser( 'qwerty' );
?>
<?php if($user->id) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
2.4) Эх, ну а логин пользователя как вывести:
<?php
$user =& JFactory::getUser();
?>
<?php if($user->id) : ?>
<div id="user1">
<?php echo $user->get('username') ?>
</div>
<?php endif ?>
3) Как отобразить позицию в определённом компоненте, например в компоненте «Контакты»?
<?php
$option = JRequest::getVar( 'option' );
?>
<?php if($option == 'com_contact') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
3.1) Ну а как вывести позицию при определённом Itemid, например «35»?
<?php
$itemid = JRequest::getInt( 'Itemid' );
?>
<?php if($itemid == '35') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
3.2) А как показать позицию только на банальной «Главной» сайта?
<?php
$option = JRequest::getVar( 'option' );
$id = JRequest::getInt( 'id' );
?>
<?php if($option == 'com_content' && !$id) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Или же более универсальное решение (определяет пункт меню, у которого стоит метка «По умолчанию»):
<?php
$menu =& JSite::getMenu();
?>
<?php if ($menu->getActive() == $menu->getDefault()) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Следует заметить, что все используемые параметры типа:
$menu =& JSite::getMenu();
$user =& JFactory::getUser();
$option = JRequest::getVar( 'option' );
$itemid = JRequest::getInt( 'Itemid' );
нужно писать вначале index.php но не перед:
defined( '_JEXEC' ) or die( 'Restricted access' );
и только один раз, а вот данные этих параметров использовать столько сколько нужно.
Пока что всё. По мере накопления знаний данная статья будет дополнятся.
http://joomlacity.net/blog/tem_creator/8.html
Хитрости в шаблонах Joomla 1.5. Часть 1: Про позиции модулей - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.