Использование логических конструкций в шаблонах

Использование логических конструкций в HTML шаблонах форума IPB 2.0 и выше (поддержка логических конструкций в шаблонах появилась в IPB начиная с версии 2.0.0) – это возможность показывать или скрывать некоторые части шаблонов по вашему условию. Условия могут быть заданы исходя из того, что, например, пользователь находится в особенной группе или, что он просматривает определенный форум или, что специальная переменная задана с определённым значением, и многие другие. Используя правильное условие, вы можете управлять содержимым на странице.

Где найти редактор для изменения шаблонов форума в Админцентре?

Для IPB 2.0.x: Стили → Менеджер стилей → Изменить HTML фрагменты.
Для IPB 2.1.x: ВНЕШНИЙ ВИД → Изменить HTML фрагменты.

Принцип работы простейших логических конструкций

Если условие удовлетворяет, то Действие.

<Если = "Условие">
Действие.
</Если>

Если условие удовлетворяет, то Действие 1, Иначе Действие 2.

<Если = "Условие">
Действие 1.
</Если>
<Иначе>
Действие 2.
</Иначе>

Описание операторов

Перечислим некоторые операторы, которые понядобятся для составления условий в логических конструкциях.

1. Операторы сравнения

Оператор Описание
Равно == Возвращает true, если операнды равны.
Не равно != Возвращает true, если операнды не равны.
Больше чем > Возвращает true, если левый операнд больше чем правый.
Больше чем или равно >= Возвращает true, если левый операнд больше чем или равен правому.
Меньше чем < Возвращает true, если левый операнд меньше чем правый операнд.
Меньше чем или равно < = Возвращает true, если левый операнд меньше или равен правому.

2. Логические операторы

Оператор Использование Описание
И && expr1 && expr2 Вовращает expr1, если преобразование false. Иначе, возвращает expr2.
ИЛИ II expr1 II expr2 Возвращает expr1, если преобразование true. Иначе, возвращает expr2.
НЕ ! !expr Если expr true, возвращает false; если expr false, возвращает true.

Логические конструкции в версии 2.2.х и 2.3.x

Синтаксис конструкции if — else:

<if="условие">
какой-то код
<else />
в противном случае
</if>

Добавилась конструкция foreach, пример:

<foreach="$friends as $friend">
{$friend['name']}<br />
</foreach>

Кроме того, в 2.2 нету <elseif=''>, зато можно вкладывать if'ы друг в друга.

Изменения коснулись и формата записи условий, теперь при использовании переменных нужно использовать $, например:

<if="$post['author_id'] > 0">
Эта надпись или код будет показываться или обрабатываться только пользовательских сообщений
</if>
<if="$this->ipsclass->member['id'] > 0">
Код, отображаемый только зарегистрированным
</if>

Общие примеры использования логических конструкций в шаблонах форума

1. Пример конструкции с выводом кода только для Пользователей:

<if="ipb.member['id'] > 0">
Эта надпись или код будет показываться или обрабатываться только для пользователей.
</if>

Где 0 - это флаг для определения посетителя: пользователь или гость. Если у посетителя id > 0, то, значит, он пользователь, иначе (см.ниже).


2. Пример только для Гостей:

<if="ipb.member['id'] <= 0">
Тут только для гостей.
</if>

Как видно из примера, если id посетителя не больше 0, значит, он гость.


3. Для группы администраторов:

<if="ipb.member['mgroup'] == ipb.vars['admin_group']">
А тут для администраторов форума.
</if>

Здесь, ipb.vars['admin_group'] - определитель группы администраторов форума. По-умолчанию, в IPB это группа с id = 4. Подробнее можно посмотреть в файле conf_global.php.


4. Пример комбинированного условия только для администрации (Администраторы, Супермодераторы и Модераторы):

<if="ipb.member['mgroup'] == ipb.vars['admin_group'] || ipb.member['is_mod'] || ipb.member['g_is_supmod'] == 1">
Это содержимое только для администрации форума!
</if>

По аналогии с предыдущим примером, с использованием логического оператора ИЛИ (||) добавили определители на предмет принадлежности пользователя к модераторам и супермодераторам.


5. Условие только для определённого пользователя:

<if="ipb.member['id'] == {id}">
Содержимое только для пользователя с id {id}.
</if>

Здесь, нужно заменить »{id}» на число, номер пользователя, его id.


6. А если для двух пользователей?

<if="ipb.member['id'] == {id1} || ipb.member['id'] == {id2}">
Для пользователя с id {id1} и с {id2}.
</if>

Аналогично предыдущему, с использованием логического оператора ИЛИ (||) ищем двух пользователей. Переменные »{id1}» и »{id2}» заменить на номера (id) нужных пользователей.


7. Условие для специальной группы:

<if="ipb.member['mgroup'] == {gid}">
Содержимое покажется только для группы с id {gid}.
</if>

Здесь, »{gid}» заменить на номер группы (число), для которой действие будет выполняться.


8. А если для двух групп?

<if="ipb.member['mgroup'] == {gid1} || ipb.member['mgroup'] == {gid2}">
А тут для группы с id {gid1} и с {gid2}.
</if>

Аналогично, с оператором ИЛИ (||) проверка на принадлежность к одной из группы. Вместо »{gid1}» и »{gid2}» подставить номера нужных групп.


9. Условие отображение только на определённой странице, act=:

<if="ipb.input['_low_act'] == 'idx'">
Эта надпись появится только на странице главной странице, index.php?act=idx.
</if>

Здесь, вы можете изменить 'idx' на страницу, на которой надпись будет отображена, например на 'home' (портал).


10. Условие для отображения только в определённом форуме:

<if="ipb.input['showforum'] == {fid}">
Эта надпись появится только в форуме с id {fid}.
</if>

Здесь, »{fid}» заменить на номер форума, в котором содержимое (действие) будет показано.


11. Только в определённой теме:

<if="ipb.input['showtopic'] == {tid}">
Эта надпись появится только в теме id {tid}.
</if>

Тут, »{tid}» - идентификатор темы, его нужно заменить на номер нужной темы.


12. Альтернативная конструкция с »<else>» (иначе):

<if="ipb.member['id'] > 0">
Содержимое только для пользователей.
</if>
<else>
А это только для гостей.
</else>

Как и в примере №1, условие проверки посетителя на принадлежность к пользователям. Если он пользователь, то показываем содержимое для пользователей, иначе (значит, он гость) показываем содержимое для гостя.


Это примеры простейших конструкций, вы можете использовать и более сложные.

Вы так же можете использовать свои условия и переменные в них. Если вы добавите новую настройку с ключом «test», то затем вы её можете использовать в логических конструкциях HTML шаблонов.

Успехов!

 

skins/html/logic.txt · Последние изменения: 2007/11/16 19:40 vasyast

Работает на DokuWiki
© 2002—2006 ibresource
e-mail: wikiteam@iblink.ru