Действия

Функция countModules в Joomla 1.5

Материал из База знаний 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 &lt; user2
Возвращает true, если число модуле на позиции 1 меньше такового на позиции 2.
 >
user1 &gt; user2
Возвращает true, если число модулей на позиции 1 больше чем на 2.
 <
user1 &lt;= user2
Проверка "меньше или равно"
 >=
user1 &gt;= user2
Проверка "больше или равно"
 and
user1 and user2
Возвращает true, если на обоих позициях включен хотя бы один модуль, иначе возвращает false
 or
user1 or user2
Возвращает true если хотя бы на одной или сразу на обоих позициях есть хотя бы один включенный модуль, иначе возвращает false.

Если метод countModules() возвращет ненулевое значение, это аналогично true; а ноль аналогичен false.

В конструкцию по объединению модулей могут быть включены более чем две позиции модулей. Проверка происходит слева направо, согласно приоритету операций. Порядок приоритета операции дан в следующей таблице:

Операторы Тип оператора
* / Арифметические операции
+ - Арифметические операции
< <= > >= Операторы сравнения
== != Операторы сравнения
and Логические операции
or Логические операции


Ссылки

источник (JDocumentHTML/countModules)