Условия в шаблонах - модуль 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 %}
- 09.02.2020 15:25
- Категория: Платные модули
Гость
admin Разработчик 430 комментариев
Вадим Гость
admin Разработчик 430 комментариев
Вадим Гость
admin Разработчик 430 комментариев
Spopovich Гость
admin Разработчик 430 комментариев
Гость
Вопрос такого плана, возможно ли с помощью вашего модуля вывести на сайте условие что если сумма рейтинга всех статей категории( выводимая строкой {summ-info data="rating" category="{category-id}" cache="yes"} ) больше определенного значения то вывести один текст, а если меньше то другой?
admin Разработчик 430 комментариев
Гость
admin Разработчик 430 комментариев
Гость
admin Разработчик 430 комментариев
Гость
admin Разработчик 430 комментариев
Гость
admin Разработчик 430 комментариев