Глобальные условные переменные

Условные переменные, это переменные парного типа, которые позволяют вам условно отображать или скрывать информацию на ваших страницах, на основе определенных критериев. Условные переменные имеют тот же самый синтаксис, что и условные операторы PHP, которые обычно выглядят следующим образом:

{if переменная оператор сравнения значение}

Данные между тегами, которые отображаются, если условие выполнено.

{/if}

Базовая условная переменная будет выглядеть следующим образом:

{if username == "joe"}

<h1>Hi Joe!</h1>

{/if}

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

Техническое примечание: Мы используем PHP для расчета условных выражений в ExpressionEngine, поэтому есть определенные символы в переменной, которые мы должны защитить, для того, чтобы они не обрабатывались как код PHP. Это выполняется или преобразованием этих символов в объекты HTML, или удалением этих символов полностью. Вот список замен:

Например, если вы хотите сравнить переменную со значением, которое содержит двойные кавычки, то вам необходимо заменить в значении любые кавычки на символьные объекты. Например, если ваше имя - "The Republic", то вы должны написать условие следующим образом: {if screen_name == '&#34;The Republic&#34;'}

Расширенные условные выражения

ПРИМЕЧАНИЕ: Расширенные условные выражения вычисляются после разбора всех тегов EE. Смотри примеры использования на странице ExpressionEngine Knowledge-Blog.

Большинство расширенных условных выражений могут использовать логические операторы (например: OR, AND), для сравнения нескольких переменных с несколькими условиями. Рассмотрите пример:

{if username == "joe" OR username == "bob"}

<h1>Hey, Guys!</h1>

{/if}

Или этот пример:

{if username != "joe" AND username != "bob"}

<h1>Hey, Guys!</h1>

{/if}

Else или Elseif

Вы можете использовать две дополнительных структуры управления, для получения необходимых результатов:

{if:else} {if:elseif}

Они работают подобно стандартным конструкциям PHP else и elseif. Например:

{if username == "joe"}

<h1>Hey, Joe! Where were you Tuesday?</h1>

{if:elseif username == "bob"}

<h1>Hey, Bob! Thanks for the tickets!</h1>

{if:else}

<h1>Welcome to our site.</h1>

{/if}

В приведенном выше примере, если авторизованный пользователь имеет логин "joe", то он получит первое сообщение. В противном случае EE проверит второе условие для логина "bob". Если логин пользователя ни joe, ни bob, будет показано сообщение по умолчанию.

Примечание:  Не смущайтесь префикса {if:. Он просто помогает анализатору EE идентифицировать каждую структуру управления. Информация справа от префикса определяет, какой условный оператор вы используете.

Операторы

Следующее сравнения и логические операторы разрешены в условных выражениях:

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

Вы можете использовать любой из следующих операторов, для сравнения переменной со значением:

Примечание:  При проверке на равенство, убедитесь, что используете два знака равенства, а не один: ==

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

Вы можете использовать следующие операторы, чтобы сравнивать несколько переменных с несколькими значениями:

Логические операторы имеют приоритет, который определяет, в каком порядке будут разобраны части условия. В следующем расширенном условном выражении сначала сравниваются member_id и member_group, с использованием &&, затем результат сравнивается с частью логина, с использованием OR.

{if member_id != '1' && member_group != "5" OR username == "Billy"} Hi! {/if}

Итак, если идентификатор пользователя (member_id) сайта не равен 1, и идентификатор группы пользователей (member_group), к которой он принадлежит, не равен 5, и, его логин Billy, то он увидит данные в условном выражении. В таблице логических операторов, которая приведена выше, самые первые операторы сверху имеют более высокий приоритет.

Круглые скобки в условных выражениях

Как и в PHP, вы можете использовать круглые скобки, чтобы объединить часть условных выражений, для изменения приоритета их выполнения. Условные выражения в скобках выполняются в первую очередь. Например, в коде, который приведен ниже, сначала выполняется сравнение с двумя группами пользователей, затем результат сравнивается с идентификатором раздела:

{if (member_id == '1' OR member_id == '2') && weblog_id == '5'}

Итак, если идентификатор группы пользователя (member_id) равен 1 или 2, и он просматривает раздел с идентификатором 5, то он увидит содержимое этого условного выражения.

Краткие условные выражения

Определенные условные выражения существуют в сокращенной форме, чтобы улучшить читаемость кода шаблона. Эти условные выражения обычно проверяют, выполняются ли определенные условия или нет:

Глобальные условные выражения

if group_id

{if group_id == '7'}

You're an "Editor"!
{/if}

Вы можете проверить группу, к которой принадлежит пользователь. Это условие проверяет идентификатор группы пользователя (member group id number). В теге {exp:weblog:entries} должна применяться альтернативная версия {if member_group == '3'} этого условного выражения.

if logged_in

{if logged_in}

Welcome back to the site!<br />
<a href="{path="LOGOUT"}">Logout</a>

{/if}

Содержимое этой пары тегов будет обработано, если пользователь, просматривающий страницу, авторизован на сайте.

Примечание: Здесь выполняется только проверка того, действительно ли кто-то авторизовался. Если вы хотите ограничить доступ к отдельной странице, на основании принадлежности к определенной группе пользователей, то вы должны сделать это в настройках шаблонов, в панели управления.

if logged_out

{if logged_out}

You aren't a member or aren't logged in.<br />
<a href="{path="member/login"}">Login</a> | <a href="{path="member/register"}">Register</a>

{/if}

Содержимое этой пары тегов будет обработано, если человек, просматривающий страницу не авторизован в настоящее время.

В ссылке "logout", приведенной выше используется специальный путь: {path="LOGOUT"}. Это значение специального пути, которое автоматически создает корректную ссылку для выхода из системы.

if member_group

{if member_group == '7'}

You're an "Editor"!
{/if}

Вы можете проверить группу, к которой принадлежит пользователь. Это условие проверяет идентификатор группы пользователя (member group id number). Это условное выражение идентично group_id, которое описывалось выше. {member_group} будет работать правильно в теге {exp:weblog:entries}, в любом случае.

if member_id

{if member_id == '147'}

Ooh, you're really special, Frank!!
{/if}

Проверяет идентификатор (member id) авторизованного пользователя.

if screen_name

{if screen_name == "Mr. Ed"}

Thanks for all your hard work on the site, Ed!
{/if}

Вы можете проверить имя (видимое) авторизованного в данный момент пользователя.

if total_comments

{if total_comments < 1}

What?? No one has commented on my site at all?!?!
{/if}

Проверка количества комментариев, отправленных на всем сайте.

if total_entries

{if total_entries > 1000}

Yowza! This is one hot site!
{/if}

Проверка общего количества записей, опубликованных на сайте.

if segment_X

{if segment_3 == "private"}

You're seeing something private!
{/if}

Вы можете проверить один из доступных сегментов URL. Условие должно быть заменено корректным названием сегмента. например, если вам нужен 3-ий сегмент URL, то необходимо использовать {if segment_3}.

if username

{if username == "elvira"}

Hi, mom! I know it's you!
{/if}

Вы можете проверить логин пользователя, авторизованного в настоящее время.

Альтернативный синтаксис

Чтобы была возможность использовать некоторые переменные пользователя в условных выражениях внутри тегов weblog entries, которые обрабатывают свою собственную информацию о пользователях, необходимо использовать альтернативный синтаксис. Все переменные пользователя могут использоваться в условных выражениях с дополнительным префиксом "logged_in _".

{exp:weblog:entries weblog="default_site"}
    {if logged_in_member_id == author_id}
        <p>You wrote this entry!</p>
    {/if}
{/exp:weblog:entries}

Список доступных переменных пользователя, которые могут использоваться с альтернативным синтаксисом, приведен ниже:

Наверх страницы