|
|
|
|
|
|
|
|
|
|
Использование логических конструкций в 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. |
Синтаксис конструкции 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 шаблонов.
Успехов!
Работает на DokuWiki |