После подготовки основы шаблона и вывода контента, встаёт вопрос о том, как организовать логику вывода основных блоков. Речь идет о формировании левой, правой и основной сторон, в зависимости от вывода содержимого в этих блоках.

В совокупности существует две проблемы:

  • выводится пустой блок при отсутствии модулей в этом месте;
  • не размещаются во всё ширину остальные блоки

Давайте, отключим все модули в левой позиции и посмотрим результат:

Как видим, у нас проявилась первая проблема - осталось пустое место (блок без содержимого).

Чтобы решить вторую проблему, необходимо сначала расправиться с первой.

Скрытие пустого блока

Чтобы блок не выводился, проще его удалить, однако для шаблонов Joomla это не приемлемо, поскольку в любой момент может понадобится его вывести.

Поэтому организовываем логику на языке PHP, Делаем так, чтобы в случае полного отсутствия модулей в позиции слева, левый блок не выводился.

Данную обработку вставляем при помощи функции countModules, которая и определяет наличие модулей в указанной позиции.

Таким образом делаем это для каждого блока (включая все остальные позиции), кроме основного.

Как теперь будет выглядеть содержимое шаблона, с отсутствием, модулей во всё той же позиции слева?

Как видим, первый блок не выводится - это хорошо, но и остальные остались прежнего размера.

При вёрстке на Bootstrap ширина всех блоков задаётся при помощи тега span, значение которого и определяет размер. Поэтому чтобы изменить размер блоков нужно переписать это значение. Только вот одна проблема - значение один раз переписать не удастся, ведь мы можем снова создать модуль слева и вся верстка нарушится.

Нужна еще одна логика, на этот раз по формированию тега span для основного блока с контентом.

Размещение блоков по всей ширине

Делаем следующую вставку в самый верх, файла index.php - в область с тегом php.

Здесь используется та же функция countModules, которая определяет наличие хоть одного модуля в указанной позиции.

Таким образом мы делаем 4 условия.

Первое - при наличии левого и правого блока выводится блок с 50% размером (span6).

Второе - при наличии только левого блока, без правого - выводится размер в 74% (span9).

Третье - то же что и второе, только для правого, без левого.

Четвертое - при полном отсутствии блоков - выводится размер в 100% (span12).

Данные значения указываются в переменную $span, и затем вставляются в class для основного блока. Что и позволяет использовать прописанную логику.

Посмотрим на результат, как будет формироваться контент без модулей в левой позиции:

Всё выводится идеально.

Таким образом, можно прорабатывать самую разную логику с использованием размеров Bootstrap (span), необязательно использовать подобные размеры.

Заключение

Логика - неотъемлемая часть в создании шаблонов, поскольку каждый шаблон должен быть гибким, и уметь подставиться под разные требования пользователей.

Вот мы и разобрали основы создания шаблона для Joomla 3! Все остальное - это проработка нюансов и оформление.

Однако этих нюансов большое множество - поэтому мною был подготовлен Полноценный курс по созданию шаблона, в котором и разбирается процесс создания шаблона от А до Я. Это отличный способ закрепить полученные ранее навыки и стать профессионалом в это деле.