RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Условия в шаблонах c помощью countModules

countModules — Возвращает число модулей включенных в определенную позицию (позиции). Аргументом функции является строка с названием позиции, либо логической комбинацией из нескольких.

Пример использования countModules:

<!-- код будет работать только внутри шаблона, например для /templates/beez5/index.php -->
<?php if ($this->countModules( 'user1' )) : ?>
    <div class="modules_user1">
        <jdoc:include type="modules" name="user1" style="rounded" />
    </div>
<?php endif; ?>

В примере выше, мы проверяем количество модулей включенных в область (позицию) "user1". Если это число больше 0, то выводим позицию с обрамлением в виде <div class="modules_user1">. Таким образом можно добавлять часть шаблона только если у нас включены модули в определенные  места на странице. Таким областями могут быть левая, правая колонка, наличие большой шапки на главной странице и т. д. Так мы избавим шаблон от появления нежелательных пустых пространств на сайте.

countModules может быть использован для подсчета в более чем одной позиции на сайте, можно использовать более сложные вычисления. Например

$this->countModules( 'user1 + user2' ); 

Вернет сумму модулей в позициях user1 и user2.

Так же можно использовать логические операторы, например так

$this->countModules( 'user1 and user2' );

Будьте внимательны при написании подобных аргументов, следующий код приведет к синтаксической ошибке:

$this->countModules( 'user1' and 'user2' );

Более  того, вы должны использовать не больше одного пробела вокруг ключевых слов(символов), таких как "and" и "+". Рассмотрим более сложный пример

<?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 отображаются обрамленными общим <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 Логический оператор

Смотрите также:
Комментарии (14) Добавить комментарий
  • Андрей
    Андрей
    11 Декабря 2012, 03:15
     ↑  0  ↓     ответ

    Здравствуйте! Подскажите,что такое position 4[ rounded outline]

  • Анатолий
    Анатолий
    15 Декабря 2012, 19:32
     ↑  0  ↓     ответ

    Познавательная статейка. Спасибо автору. Скажите пожалуйста а если в строке <?php if ($this->countModules( 'user1' )) : ?> вместо user1 использовать переменную, ну например: если запись будет иметь такой вид -

    <?php if ($this->countModules( $position5 )) : ?> что при этом будет? У меня почему то выдаёт ошибку. Хотя шаблон стандрартный.

  • Сергей Поляков
    Сергей Поляков
    07 Февраля 2019, 19:50
     ↑  0  ↓     ответ

    <?php if ($this->countModules('position5')): ?> напишите вместо этого, спустя 7 лет получите ответ))))))

  • tinyurl.com
    tinyurl.com
    24 Ноября 2019, 03:12
     ↑  0  ↓     ответ

    Hi there, after reading this amazing piece of writing i

    am as well delighted to share my experience here with friends.

  • tinyurl.com
    tinyurl.com
    24 Ноября 2019, 22:30
     ↑  0  ↓     ответ

    Your style is very unique compared to other people I've read stuff from.

    I appreciate you for posting when you've got the opportunity, Guess I'll just bookmark this web site.

  • and coconut oil
    and coconut oil
    25 Ноября 2019, 23:06
     ↑  0  ↓     ответ

    Excellent, what a blog it is! This webpage provides useful information to

    us, keep it up.

  • plenty of fish dating site
    plenty of fish dating site
    26 Ноября 2019, 23:45
     ↑  0  ↓     ответ

    Keep on working, great job!

  • cialis generic tadalafil
    cialis generic tadalafil
    05 Декабря 2021, 16:20
     ↑  0  ↓     ответ

    This is a good tip especially to those new to the blogosphere.

    Simple but very accurate info… Thank you for sharing this one.

    A must read post!

  • Melodee
    Melodee
    03 Сентября 2022, 21:45
     ↑  0  ↓     ответ

    bunadisisj nsjjsjsisjsmizjzjjzjzz zumzsert

  • Kenny
    Kenny
    21 Сентября 2022, 04:51
     ↑  0  ↓     ответ

    bunadisisj nsjjsjsisjsmizjzjjzjzz zumzsert

  • Damian
    Damian
    30 Октября 2022, 14:50
     ↑  0  ↓     ответ

    Your style is basically distinctive as compared to other people I’ve read through things from. Many thanks for submitting when you have the opportunity, Guess I’ll just reserve mark this website page.

  • Wally
    Wally
    16 Декабря 2022, 22:41
     ↑  0  ↓     ответ

    Greetings! Extremely helpful suggestions within this text! It’s the very little modifications which can make the most significant modifications. Thanks for sharing!

  • Esperanza
    Esperanza
    09 Января 2023, 23:39
     ↑  0  ↓     ответ

    It’s in reality a terrific and handy piece of knowledge. I'm satisfied that you just shared this helpful info with us. You should keep us current like this. Many thanks for sharing.

  • Dina
    Dina
    10 Января 2023, 00:16
     ↑  0  ↓     ответ

    Many thanks for sharing your thoughts about. Regards panilul.se/map23.php filippa k knitted dress

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.