Условия в шаблонах c помощью countModules
countModules — Возвращает число модулей включенных в определенную позицию (позиции). Аргументом функции является строка с названием позиции, либо логической комбинацией из нескольких.
Пример использования countModules:
В примере выше, мы проверяем количество модулей включенных в область (позицию) "user1". Если это число больше 0, то выводим позицию с обрамлением в виде <div class="modules_user1">. Таким образом можно добавлять часть шаблона только если у нас включены модули в определенные места на странице. Таким областями могут быть левая, правая колонка, наличие большой шапки на главной странице и т. д. Так мы избавим шаблон от появления нежелательных пустых пространств на сайте.
countModules может быть использован для подсчета в более чем одной позиции на сайте, можно использовать более сложные вычисления. Например
Вернет сумму модулей в позициях user1 и user2.
Так же можно использовать логические операторы, например так
Будьте внимательны при написании подобных аргументов, следующий код приведет к синтаксической ошибке:
Более того, вы должны использовать не больше одного пробела вокруг ключевых слов(символов), таких как "and" и "+". Рассмотрим более сложный пример
В этом примере позиции user1 и user2 отображаются обрамленными общим <div class="user1user2"> с разделителем <div class="greyline">. Разделитель покажется только при наличии модулей в обоих позициях. Весь блок с обрамлением отобразиться если хоть в одной из позиций есть активные модули.
Операторы доступные для countModules
Оператор | Пример | Описание |
---|---|---|
+ | user1 + user2 |
Сумма модулей в 2х позициях |
- | user1 - user2 |
Разность между количеством модулей из разных позиций |
* | user1 * user2 |
Произведение количества модулей из разных позиций |
/ | user1 / user2 |
Отношение количества модулей |
== | user1 == user2 |
Вернет истину, если количество модулей в различных позициях равно |
!= | user1 != user2 |
Вернет истину, если количество модулей не равно |
<> | user1 <> user2 |
Тоже что и !=. |
< | user1 < user2 |
Вернет истину, если в user1 меньше модулей чем в user2 |
> | user1 > user2 |
Вернет истину, если в user1 больше модулей чем в user2 |
<= | user1 <= user2 |
Вернет истину, если количество модулей в user1 меньше, либо равно количеству в user2 |
>= | user1 >= user2 |
Вернет истину, если количество модулей в user1 больше, либо равно количеству в user2 |
and | user1 and user2 |
Вернет истину если одновременно в user1 и в user2 есть активные модули |
or | user1 or user2 |
Вернет истину если хотябы в одной из позиций есть модули |
xor | user1 xor user2 |
Вернет истину если только в одной из двух позиций есть модули. Если сразу в обеих позициях есть активные модули, то вернет ложь. |
Заметим что можно использовать более 2х позиций для countModules. Вычисления происходят слева на право с учетом приоритетов операторов. Ниже операторы перечислены в порядке убывания их приоритетов.
Операторы | Оператор типа |
---|---|
* / | Арифметические операторы |
+ - | Арифметические операторы |
< <= => > | Операторы сравнения |
==! = | Операторы сравнения |
and | Логический оператор |
xor | Логический оператор |
or | Логический оператор |