Создание сайтов в Челябинске. Продвижение. Оптимизация

Разработка сайтов, поисковая оптимизация, продвижение, техническая поддержка и обслуживание вебсайтов любой сложности. Быстро, качественно и по разумной цене.

Создание шаблона для Joomla 3.0 (часть 4)

Разработка шаблона для Joomla 3 с нуляПриходит очень много писем с вопросами по созданию шаблона для Joomla, поэтому мы решили подготовить еще одну небольшую статью по этому вопросу. На самом деле тема разработки шаблона достаточно широка и изложить в нескольких статьях ее достаточно сложно, но с вашей помощью и вопросами мы обязательно это сделаем!

Шаг 6. Функция countModules

Чтобы написать по-настоящему удобный и гибкий шаблон необходимо проверять занята ли позиция или нет. Где это может пригодиться? Ну например в нашем шаблоне предусмотрено два сайдбара (левый и правый), но на некоторых страницах надобности в обоих нет, в таком случае было бы правильно на этих страницах проверять наличие модулей в этих позициях тут на помощь приходит функция countModules(). Результатом работы функции является количество модулей в проверяемой позиции.

<?php if ($this->countModules('left')) : ?> // возвратит 0 если позиция пустая
<div class="left">
<jdoc:include type="modules" name="header" style="none"/>
</div>
<?php endif; ?>

Это самый простой пример использования этой функции. Далее полное описание всех вариантов работы.

$this->countModules(user1 + user2);

Сумма модулей в позициях user1 и user2

$this->countModules(user1 - user2);

Разность модулей в позициях user1 и user2

$this->countModules(user1 * user2);

Произвдение количества модулей в позициях user1 и user2

$this->countModules(user1 / user2);

Отношение количества модулей

$this->countModules(user1 == user2);

Вернет истину если количество модулей в позициях одинково

$this->countModules(user1 != user2);

Вернет истину если количество модулей в позициях разное

$this->countModules(user1 <> user2);

Тоже что и !=

$this->countModules(user1 < user2);

Истина если количество модулей в user1 меньше чем в user2

$this->countModules(user1 > user2);

Истина если количество модулей в user1 больше чем в user2

$this->countModules(user1 <= user2);

Истина если количество модулей в user1 меньше либо равно, чем в user2

$this->countModules(user1 >= user2);

Истина если количество модулей в user1 больше либо равно, чем в user2

$this->countModules(user1 and user2);

Вернет истину если одновременно в user1 и в user2 есть активные модули

$this->countModules(user1 or user2);

Вернет истину если хотябы в одной из позиций есть модули

$this->countModules(user1 xor user2);

Вернет истину если только в одной из двух позиций есть модули. Если сразу в обеих позициях есть активные модули, то вернет ложь.

Все операторы можно использовать для любого количества позиций. Главное следить за количеством пробелов между оператором и названиями позиций.

Разберем конкретный пример как скрывать и показывать сайдбары и менять ширину области с контентом в зависимости от модулей.

 <?php if ($this->countModules('left and right')) : //если есть модули в обоих позициях ?>
  <div class="span3 left">
    <jdoc:include type="modules" name="left" style="default"/>
  </div>
  <div class="span6 ">
  <jdoc:include type="message" />
  <jdoc:include type="component" />        
  <div class="span3 right">
    <jdoc:include type="modules" name="right" style="default"/>
  </div>
<?php elseif ($this->countModules('left')) : //иначе если есть модули только в позиции left?>
  <div class="span4 left">
    <jdoc:include type="modules" name="left" style="default"/>
  </div>
  <div class="span8 ">                
    <jdoc:include type="message" />
    <jdoc:include type="component" />
  </div>
<?php elseif ($this->countModules('right')) : //иначе если есть модули в позиции right?>
  <div class="span8 ">
    <jdoc:include type="message" />
    <jdoc:include type="component" />
  </div>
  <div class="span4 right">
    <jdoc:include type="modules" name="right" style="default"/>
  </div>
<?php else : //ну и если нет модулей нигде то показываем контент на всю ширину?>
  <div class="span12 ">
    <jdoc:include type="message" />
    <jdoc:include type="component" />
  </div>
<?php endif; ?>

Результат работы данного кода ниже на рисунке.

Задавайте свои вопросы в комментариях, мы постараемся ответить. Всем спасибо за внимание и за участие в обсуждении.

Понравилась статья? Возник вопрос? Вступайте в нашу группу и смело задавайте vk.com/saity74