
Каждый кто работает с 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):
1.
section в том случае, если тип ссылки будет «содержимое раздела»
2.
category – для типа ссылки «содержимое категории» или же при переходе из раздела «содержимое раздела», либо же тип «блог-содержимое категории»
3.
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; ?>
P.S. – если в позиции RIGHT нет ни одного модуля, rightcolumn будет скрыт, но для того, чтобы центральный блок занял всю оставшуюся ширину, к нему необходимо применить собственный класс centercolumn_full.
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 {
- // тут всё что не на главной
- }
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();