Телефон: +38 (093) 914-20-50
WEB-дизайн и создание продающих сайтов

Условия в шаблонах Joomla

Главная Статьи Условия в шаблонах Joomla
CSS3Logo Каждый кто работает с 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 и вывода компонентов, с левой и правой позиции модулей).

Код:
  1. $Itemid = JRequest::getInt( ‘Itemid’, 1, ‘get’ );
  2. $option = JRequest::getVar(‘option’, null);
  3. $view = JRequest::getVar(‘view’, null);
  4. $document
  5. = & JFactory::getDocument();
  6. $user = & JFactory::getUser();

1. ЕСЛИ В ПОЗИЦИИ RIGHT НИЧЕГО НЕ ОПУБЛИКОВАНО, ТО СКРЫВАТЬ НУЖНЫЙ НАМ МОДУЛЬ НА САЙТЕ.
Код:
  1. <div class=«leftcolumn»><jdoc:include type=«modules» name=«left» style=«xhtml» /></div>
  2. <?php if($this->countModules(‘right’)) : ?>
  3. <div class=«centercolumn»><jdoc:include type=«modules» name=«breadcrumb» /><jdoc:include type=«component» /></div>
  4. <div class=«rightcolumn»><jdoc:include type=«modules» name=«right» style=«xhtml» /></div>
  5. <?php else: ?>
  6. <div class=«centercolumn_full»><jdoc:include type=«modules» name=«breadcrumb» /><jdoc:include type=«component» /></div>
  7. <?php endif; ?>
P.S. – если в позиции RIGHT нет ни одного модуля, rightcolumn будет скрыт, но для того, чтобы центральный блок занял всю оставшуюся ширину, к нему необходимо применить собственный класс centercolumn_full.


2. СКРЫВАЕМ PATHWAY (ПУТЬ НА САЙТ) НА ГЛАВНОЙ, НО ПОКАЗЫВАЕМ НА ВНУТРЕННИХ.
  1. <div class=«leftcolumn»>
  2.  <jdoc:include type=«modules» name=«left» style=«xhtml» />
  3. </div>
  4. <div class=”centercolumn”>
  5.  <?php if ($Itemid != ‘1’) { ?>
  6.  <jdoc:include type=«modules» name=«breadcrumb» />
  7.  <?php } else { } ?>
  8.  <jdoc:include type=«component» /></div>
  9. <div class=«rightcolumn»>
  10.  <jdoc:include type=«modules» name=«right» style=«xhtml» />
  11. </div>


3. ДОБАВЛЯЕМ В ЦЕНТРАЛЬНУЮ ЧАСТЬ МОДУЛЬ (ПОЗИЦИЯ USER1), КОТОРЫЙ БУДЕТ ВЫВОДИТЬ ИНФОРМАЦИЮ ПОД ТЕКСТОМ СТАТЬИ, НО ПОКАЗЫВАТЬ ЕЕ ТОЛЬКО В РЕЖИМЕ ПРОСМОТРА ПОЛНОГО ТЕКСТА.
Код:
  1. <div class=«leftcolumn»><jdoc:include type=«modules» name=«left» style=«xhtml» /></div>
  2. <div class=«centercolumn»>
  3. <jdoc:include type=«modules» name=«breadcrumb» />
  4. <jdoc:include type=«component» /></div>
  5. <?php if (($option == ‘com_content’) && ($view == ‘article’)) { ?>
  6. <jdoc:include type=«modules» name=«user1» style=«xhtml» />
  7. <?php } else {} ?>
  8. <div class=«rightcolumn»><jdoc:include type=«modules» name=«right» style=«xhtml» /></div>


4. ПОЛНОСТЬЮ ПОКАЗЫВАЕМ ПРАВУЮ КОЛОНКУ ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ПОЛЬЗОВАТЕЛЯ, А ГОСТИ ВИДЯТ ЛИШ ЛЕВЫЙ БЛОК И ОСНОВНОЙ КОНТЕНТ.
Код:
  1. <div class=«leftcolumn»><jdoc:include type=«modules» name=«left» style=«xhtml» /></div>
  2. <div class=«centercolumn»><jdoc:include type=«modules» name=«breadcrumb» /><jdoc:include type=«component» /></div>
  3. <?php
  4. $user = & JFactory::getUser();
  5. if ($user->get(‘guest’) == ‘1’) { } else { ?>
  6. <div class=«rightcolumn»><jdoc:include type=«modules» name=«right» style=«xhtml» /></div>
  7. <?php } ?>


5. ПОЛЬЗОВАТЕЛЯМ, КОТОРЫЕ АВТОРИЗИРОВАНЫ ПОКАЗЫВАЕМ ПРИВЕТСТВИЕ С ЕГО ИМЕНЕМ В ПРАВОЙ КОЛОНКЕ.
Код:
  1. <div class=«leftcolumn»><jdoc:include type=«modules» name=«left» style=«xhtml» /></div>
  2. <div class=«centercolumn»><jdoc:include type=«modules» name=«breadcrumb» /><jdoc:include type=«component» /></div>
  3. <?php
  4. $user = & JFactory::getUser();
  5. echo ‘Привет тебе, о великий ‘.$user->username’; ?>
  6. <div class=«rightcolumn»><jdoc:include type=«modules» name=«right» style=«xhtml» /></div>


6. ВЫВОДИМ ЗАГОЛОВОК ТЕКУЩЕЙ СТРАНИЦИ В ЛЮБОМ МЕСТЕ ШАБЛОНА.
Код:
  1. <div class=«leftcolumn»>
  2. <?php
  3. $document = & JFactory::getDocument();
  4. echo $document->title; ?>
  5. <jdoc:include type=«modules» name=«left» style=«xhtml» /></div>
  6. <div class=«centercolumn»><jdoc:include type=«modules» name=«breadcrumb» /><jdoc:include type=«component» /></div>
  7. <div class=«rightcolumn»><jdoc:include type=«modules» name=«right» style=«xhtml» /></div>


7. ПРОВЕРКА НА ГЛАВНУЮ СТРАНИЦУ.
Код:
  1. $menu = & JSite::getMenu();
  2. if ($menu->getActive() == $menu->getDefault()) {
  3. // на главной
  4. } else {
  5. // тут всё что не на главной
  6. }


P.S.: Все необходимые параметры лучше всего объявить в начале в index.php. Например, сразу после <body> вставить
  1. $Itemid = JRequest::getInt( ‘Itemid’, 1, ‘get’ );
  2. $option = JRequest::getVar(‘option’, null);
  3. $view = JRequest::getVar(‘view’, null);
  4. $document
  5. = & JFactory::getDocument();
  6. $user = & JFactory::getUser();


Источники: joomlaforum

Skype

Skype: poltorrr

Контакты

+38 (093) 914-20-50
info@poltor.com

Я в соцсетях
Консультация

Бесплатная консультация
Написать мне

Находясь на этом сайте вы даете свое согласие на использование файлов Cookie и подтверждаете, что ознакомились и согласны с политикой конфиденциальности . Соглашаюсь
Остались вопросы?

Заполните форму ниже, и я обязательно свяжусь
с вами в ближайшее время.

Не заполняйте это поле: