Условия в шаблонах - модуль IfElse4Tpl

Перед покупкой или скачиванием модуля, пожалуйста ознакомьтесь с Лицензионным соглашением, действующим на все продукты.

Условия в шаблонах - модуль IfElse4Tpl

Модуль предназначен для использования условий в шаблонах {% if ... %} {% elseif ... %} {% else %}. Модуль рассчитан на все версии DLE от 10.x и выше (кодировка UTF-8 или Windows-1251), установка полностью автоматическая. В условиях могут использоваться все операторы сравнений: >, <, >=, <=, ==, !==, =, !=, логические операторы: and (&&), or (||). Конструкции выражений могут быть нескольких уровней вложенности. В выражении может быть несколько условий, например:
{% if $var1 == 1 or $var2 == "строка для сравнения" %} текст {% endif %}.

Можно использовать разрешенные функции, например: {% if in_array("two", $test_array) and mb_strlen($var2) > 10 %} текст {% endif %}.
Список разрешенных функций: in_array() is_array() explode() count() strlen() mb_strlen() strpos() stripos() mb_strpos() mb_stripos() date()

В условиях могут использоваться следующие массивы данных:
«$server» - содержит переменные «REQUEST_URI», «QUERY_STRING», «HTTP_REFERER», «HTTP_USER_AGENT», «REMOTE_ADDR» из массива $_SERVER;
«$global.row» - содержит глобальную переменную $row, например, в шаблонах «fullstory.tpl» и «shortstory.tpl» в ней содержатся данные новости, а в шаблоне «userinfo.tpl» в ней содержатся данные пользователя, которому принадлежит просматриваемый профиль и т.д.;
«$global.category_id», «$global.cat_info», «$global.module», «$user_row» - содержат соответствующие глобальные переменные «$category_id», «$cat_info», «$module», «$member_id» движка DLE;
«$tpl.data» - содержит переменные из массива $data объекта $tpl;
«$request.get» - содержит переменные из массива $_GET;
«$request.post» - содержит переменные из массива $_POST;

Для получения значения дополнительного поля используется ключ «xfvalues», например:
{% if $user_row['xfvalues']['balance') > 10 %} Ваш баланс (хранится в доп. поле) больше 10 {% endif %}
{% if $global.row.xfvalues.year == 2019 %} Дополнительное поле новости «год выпуска» равно 2019 {% endif %}

Для доступа к значению многомерного массива, кроме стандартной схемы, можно использовать ключи, разделенные точкой, например, две следующие строки являются равнозначными:
{% if stripos($global.row.title, 'пожалуйста') !== false %} В заголовке новости есть слово «пожалуйста» {% endif %}
{% if stripos($global['row']['title'], 'пожалуйста') !== false %} В заголовке новости есть слово «пожалуйста» {% endif %}.

Для доступа к массиву текущей категории можно использовать переменную «$category_row», например, две следующие строки являются равнозначными:
{% if $global['cat_info'][$global.category_id]['name'] == 'Информация' %} Название категории - «Информация» {% endif %}
{% if $global.category_row.name == 'Информация' %} Название категории - «Информация» {% endif %}

Для сравнения дат можно использовать внутреннюю функцию ifelse4tpl_datediff($var, ТУТ_ОБОЗНАЧЕНИЕ_ИНТЕРВАЛА_ВРЕМЕНИ). Второй параметр (по умолчанию он равен «day») может принимать несколько значений:
«year» - годы;
«month» - месяцы;
«day» - дни;
«hour» - часы;
«minute» - минуты;
«second» - секунды;
Примеры:
{% if ifelse4tpl_datediff($global.row.editdate, 'month') > 2 %} Новость была отредактирована более двух месяцев назад {% endif %}
{% if ifelse4tpl_datediff($global.row.date, 'year') > 1 %} С момента публикации новости прошло более года {% endif %}
{% if ifelse4tpl_datediff($user_row.reg_date) > 5 %} Пользователь зарегистрирован больше пяти дней назад {% endif %}

Примеры конструкций в шаблонах:
{% if *условия* %} текст {% endif %}
{% if *условия* %} текст {% else %} текст {% endif %}
{% if *условия* %} текст {% elseif *условия* %} текст {% elseif *условия* %} текст {% else %} текст {% endif %}

Также вы можете посмотреть

Другие модули для DLE

Добавить комментарий