Синтаксис
int countModules( $condition )
где:
| Аргумент | Данные типа | Описание | По умолчанию |
|---|---|---|---|
| $condition | string | Может быть имя модуля позиции, или простое выражение с участием нескольких имен модулей позиции. |
Подсчет модулей в данном модуле позиции
CountModules метод может быть использован в шаблон, чтобы определить количество модулей включена в данный модуль позиции. Это обычно используется для включения HTML вокруг модулей в определенной позиции только тогда, когда по крайней мере один модуль включен на эту должность. Это предотвращает пустые регионы, которые определяются в шаблон вывода и технике иногда называют "рушится колонны".
Например, следующий код включает в себя модули в положение 'user1', только если по крайней мере один модуль включен на эту должность.
<?php if ($this->countModules( 'user1' )) : ?> <div class="user1"> <jdoc:include type="modules" name="user1" style="rounded" /> </div> <?php endif; ?>
Подсчет модулей на нескольких позиций модуля
CountModules метод может быть использован для определения числа модулей в более, чем на одну позицию модуля.
Более продвинутые расчеты могут быть выполнены.
Аргумент функции countModules, как правило, просто название одной позиции модуля.
Функция возвращает количество модулей в настоящее время включен на эту должность модуль.
Но вы также можете делать простые логические и арифметические операции над двумя или более позиций модуля.
Например, чтобы определить общее количество модулей включена в 'user1' и 'user2' позиции вместе, вы можете использовать вызов
функции:
$this->countModules( 'user1 + user2' );
Например, чтобы определить, является ли 'user1' позиция и позиция 'user2' оба имеют по крайней мере один модуль включен, вы можете использовать вызов функции:
$this->countModules( 'user1 and user2' );
Осторожно: распространенной ошибкой является попытка что-то вроде этого:
$this->countModules( 'user1' and 'user2' );
Это в значительной степени гарантирует всегда возвращать ложное вне зависимости от количества модулей включена в любом положении, так что проверить, что вы переходя к countModules тщательно.
Вы должны иметь ровно один пробел разделения каждого элемента в строке. Например, 'user1 + user2' не даст желаемого результата,
как должно быть пробел обе стороны от знака "+". Кроме того, 'user1 + user2' будет производить сообщение PHP ошибки, есть более
чем на одно место разделения каждого элемента.
Пример: 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; ?>
Пример: user1 и user2 Модуль позиции, которые будут отображаться бок о бок с разделителем между ними.
Однако, если только одна из позиций Модуль имеет каких-либо модулей включена, то разделитель не нужен.
Кроме того, если ни одна user1 и user2 имеет каких-либо модулей включена, то ничего не выводится.
<?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; ?>
Обратите внимание, как первый звонок countModules определяет, есть ли модули для отображения на всех.
Второй определяет, будет ли Есть в любом положении 'user1', и если Есть она показывает их. Третий вызов определяет, как user1 и user2
позиции есть какие-то модули включены, и если они делают то, если предусматривается разделитель между ними.
Наконец, четвертый вызов определяет, будет ли Есть любые модули включены в положение 'user2' и отображает их, если Есть любые.
Операторы для использования с функцией countModules
Следующим логическим, сравнения и арифметические операции доступны:
| Оператор | Пример | Описание |
|---|---|---|
| + | 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 |
Возвращает ИСТИНА, если user1 имеет строго меньше, чем модули включены user2, в противном случае возвращает ложь. |
| > | user1 > user2 |
Возвращает ИСТИНА, если user2 строго больше модулей включена чем user1, в противном случае возвращает ложь. |
| <= | user1 <= user2 |
Возвращает значение True, если пользователь User1 же или меньше, чем модули включены user2, в противном случае возвращает ложь. |
| >= | user1 >= user2 |
Возвращает ИСТИНА, если user2 имеет такую же или более модулей включена чем user1, в противном случае возвращает ложь. |
| and | user1 and user2 |
Возвращает ИСТИНА, если user1 и user2 оба имеют по крайней мере 1 включен модуль, в противном случае возвращает ложь. |
| or | user1 or user2 |
Возвращает ИСТИНА, если user1 и user2 или оба имеют по крайней мере 1 включен модуль, в противном случае возвращает ложь. |
| xor | user1 xor user2 |
Возвращает ИСТИНА, если user1 и user2 но не оба, по крайней мере 1 включен модуль, в противном случае возвращает ложь. |
Более двух позиций модуля могут быть включены в выражение. Оценка выражение выполняется слева направо учетом приоритета операторов.
В следующей таблице приведен список операторов с высоким приоритетом-операторы, перечисленные в верхней части таблицы. Операторов на одной строке имеют одинаковый приоритет, и в этом случае они выполняются слева направо. Использование скобок, чтобы переопределить приоритет не поддерживается.
| Оператор | Оператор типа |
|---|---|
| * / | Арифметические операторы |
| + - | Арифметические операторы |
| < <= > >= | Операторы сравнения |
| == != | Операторы сравнения |
| and | Логический оператор |
| xor | Логический оператор |
| or | Логический оператор |
