Просмотры
Материал из База знаний Joomla.
Возвращает число модулей на определенной комбинации позиций модулей.
Содержание |
Синтаксис
int countModules( $условие )
Подсчет модулей на единственной позиции
В примере используется подсчет модулей на позиции user1
<?php if ($this->countModules( 'user1' )) : ?> <div class="user1"> <jdoc:include type="modules" name="user1" style="rounded" /> </div> <?php endif; ?>
Подсчет модулей на нескольких позициях сразу
Этот метод так же может использоваться для подсчета количества модулей на неком множестве позиций.
Например, для определения количества модулей на позиции 'user1' И 'user2' вместе, вам необходимо использовать следующий вызов функции:
$this->countModules( 'user1 + user2' );
Обычные арифметические опрерации +. -. *, / тоже будут работать, но тем не менее использовать операторы 'and' и 'or' намного удобнее.
Например, для определения наличия хотя бы одного включенного модуля на каждой из позиций 'user1' и 'user2' вам необходимо поступить так:
$this->countModules( 'user1 and user2' );
Будьте осторожны, ни в коем случае нельзя писать вот так:
$this->countModules( 'user1' and 'user2' );
Все операции по пересечению или объединению множеств должны быть разделены одним пробелом, например
user1+user2
не даст желаемого результата.
user1 + user2
тоже приведет к ошибке, так как названия модулей разделены более чем одним пробелом.
Еще пара примеров:
<?php if ($this->countModules( 'user1 or user2' )) : ?> <div class="rightcolumn"> <jdoc:include type="modules" name="user1" style="xhtml" /> <jdoc:include type="modules" name="user2" style="xhtml" /> </div> <?php endif; ?>
<?php if ($this->countModules( 'user1 or user2' )) : ?> <div class="user1user2"> <?php if ($this->countModules( 'user1' )) : ?> <jdoc:include type="modules" name="user1" style="xhtml" /> <?php endif; ?> <?php if ($this->countModules( 'user1 and user2' )) : ?> <div class="greyline"></div> <?php endif; ?> <?php if ($this->countModules( 'user2' )) : ?> <jdoc:include type="modules" name="user2" style="xhtml" /> <?php endif; ?> </div> <?php endif; ?>
Операторы, доступные в функции
| Оператор | Пример | Описание |
|---|---|---|
| + | user1 + user2
| Общее количество модулей на обоих позициях. |
| - | user1 - user2
| Число модулей на позиции 1 минус число модулей на позиции 2. |
| * | user1 * user2
| Переменожение числа модулей. |
| / | user1 / user2
| Число модулей на позиции 1, разделенное на число модулей на позиции 2. |
| == | user1 == user2
| Возвращает true если число включенных модулей на позиции 1 равно числу таких же на позиции 2. Иначе возвращает false. |
| != | user1 != user2
| Возвращает true если число модулей не совпадает, иначе возвращает false. |
| <> | user1 <> user2
| Тоже самое что и !=. |
| < | user1 < user2
| Возвращает true, если число модуле на позиции 1 меньше такового на позиции 2. |
| > | user1 > user2
| Возвращает true, если число модулей на позиции 1 больше чем на 2. |
| < | user1 <= user2
| Проверка "меньше или равно" |
| >= | user1 >= user2
| Проверка "больше или равно" |
| and | user1 and user2
| Возвращает true, если на обоих позициях включен хотя бы один модуль, иначе возвращает false |
| or | user1 or user2
| Возвращает true если хотя бы на одной или сразу на обоих позициях есть хотя бы один включенный модуль, иначе возвращает false. |
Если метод countModules() возвращет ненулевое значение, это аналогично true; а ноль аналогичен false.
В конструкцию по объединению модулей могут быть включены более чем две позиции модулей. Проверка происходит слева направо, согласно приоритету операций. Порядок приоритета операции дан в следующей таблице:
| Операторы | Тип оператора |
|---|---|
| * / | Арифметические операции |
| + - | Арифметические операции |
| < <= > >= | Операторы сравнения |
| == != | Операторы сравнения |
| and | Логические операции |
| or | Логические операции |
Ссылки
Последнее изменение этой страницы: 17:28, 3 октября 2008.



