DLE Conditions

Условия в шаблонах DataLife Engine.

version: 2.0.0 dle: 11.0 - 13.2 charset: UTF-8 php: 5.4 - 7.3
  • Поддержка операндов: >, <, >=, <=, ==, !==, =, !=, ~, !~
  • Поддержка вложеных условий.
  • Поддержка логических операторов И (&&) и ИЛИ (||).
  • Создание глобальных тегов.
  • Удобная работа с датой добавления / редактирования новости.
  • Поддержка работы с количеством фотографий в дополнительном поле типа Галерея.
  • Дополнительные проверки в условиях.
  • Дополнительные теги для шаблонизатора.

Установка


Установка модуля еще никогда не была такой простой

Установка для DataLife Engine 13.0 и выше
  • Шаг первый

    Загрузите файлы с папки Module на свой сервер.

  • Шаг второй

    Загрузить файл dle-conditions.license.php в папку /engine/lazydev/dle_conditions/.

  • Шаг третий

    Установить через систему плагинов XML файл dle-conditions.xml.

Установка для DataLife Engine 12.1 и ниже
  • Шаг первый

    Загрузите файлы с папки Module на свой сервер.

  • Шаг второй

    Загрузить файл dle-conditions.license.php в папку /engine/lazydev/dle_conditions/.

  • Шаг третий

    Откройте файл /engine/classes/templates.class.php найти

    class dle_template {
    Добавить выше
    require_once ENGINE_DIR . '/lazydev/dle_conditions/dle_conditions.php';

  • Шаг четвертый

    Откройте файл /engine/modules/show.short.php найти

    $news_found = TRUE;
    Добавить ниже
    $tpl->copy_template = dleConditions::construct()->realize($tpl->copy_template, $row);

  • Шаг пятый

    Откройте файл /engine/modules/show.full.php найти

    else $tpl->load_template( 'fullstory.tpl' );
    Добавить ниже
    $tpl->copy_template = dleConditions::construct()->realize($tpl->copy_template, $row);
    Далее найти
    while ( $related = $db->get_row() ) {
    Добавить ниже
    $tpl2->copy_template = dleConditions::construct()->realize($tpl2->copy_template, $related);

  • Шаг шестой

    Откройте файл /engine/modules/show.custom.php найти

    $news_found = true;
    Добавить ниже
    $tpl->copy_template = dleConditions::construct()->realize($tpl->copy_template, $row);

  • Шаг седьмой

    Откройте файл /engine/classes/comments.class.php найти

    $row['name'] = stripslashes( $row['name'] );
    Добавить ниже
    $tpl->copy_template = dleConditions::construct()->realize($tpl->copy_template, $row);

  • Шаг восьмой

    Откройте файл /engine/modules/profile.php найти

    $user_found = TRUE;
    Добавить ниже
    $tpl->copy_template = dleConditions::construct()->realize($tpl->copy_template, $row);

  • Шаг девятый

    Откройте файл /engine/modules/main.php найти

    $tpl->compile ( 'main' );
    Добавить ниже
    $tpl->result['main'] = dleConditions::construct()->realize($tpl->result['main']);

Работа с условиями


Инструкция по работе с условиями

Модуль поддерживает следующий ряд операндов
[if field=текст]Значение поля равно указанному тексту[/if]
[if field!=текст]Значение поля не равно указанному тексту[/if]
[if field==текст,текст2]Значение поля имеет текст и текст2[/if] // Только для категорий, тегов и дополнительных полей у которых значения разделены запятой
[if field!==текст,текст2]Значение поля не имеет текст и текст2[/if] // Только для категорий, тегов и дополнительных полей у которых значения разделены запятой
[if field>100]Значение поля строго больше 100[/if]
[if field>=55]Значение поля больше либо равно 55[/if]
[if field<300]Значение поля строго меньше 300[/if]
[if field<=444]Значение поля меньше или равно 444[/if]
[if field~кофе]В тексте поля встречается слово кофе[/if]
[if field!~кофе]В тексте поля НЕ встречается слово кофе[/if]
[if field]Поле не пустое[/if]
[if !field]Поле пустое[/if]
Модуль включает в себя возможность вложенных условий, пример:
[if xfvalue_status=new]
    Новая [if1 rating>50 || news_read>1000]популярная[else1]не популярная[/if1] новость
[/if]
То есть, каждое новое вложение должно иметь число по возрастающему.

Для работы с датой новостей добавлены два параметра, это day. и date.
Пример параметра day.:
[if day.date<1]Добавлено больше 1 дня назад[/if]
[if day.date>1]Добавлено меньше 1 дня назад[/if]
[if day.date=0]Добавлено сегодня[/if]
[if day.editdate=0]Отредактировано сегодня[/if]
Как должно было быть понятно из примеров, параметр day. преобразовывает указаное количество дней в дату и сравнивает с датой новости.
Пример параметра date.:
[if date.date=сегодня]Добавлено сегодня[/if]
[if date.date=вчера]Добавлено вчера[/if]
[if date.date=1 день]Добавлено 1 день назад[/if]
[if date.date=2 дня]Добавлено 2 дня назад[/if]
[if date.date=5 дней]Добавлено 5 дня назад[/if]
[if date.date=1 неделя]Добавлено 1 неделю назад[/if]
[if date.date=2 недели]Добавлено 2 недели назад[/if]
[if date.date=5 недель]Добавлено 5 недель назад[/if]
[if date.date=завтра]Будет добавлено завтра[/if]
[if date.date=1 месяц]Добавлено 1 месяц назад[/if]
[if date.date=2 месяца]Добавлено 2 месяца назад[/if]
[if date.date=5 месяцев]Добавлено 5 месяцев назад[/if]
[if date.date=1 год]Добавлено 1 год назад[/if]
[if date.date=2 года]Добавлено 2 года назад[/if]
[if date.date=5 лет]Добавлено 5 лет назад[/if]
Как должно было быть понятно из примеров, параметр date. работает с датой в строчном виде.

Количество фотографий в дополнительном поле типа Галерея, пример с проверкой сколько фото в дополнительном поле (galery разумеется это название дополнительного поля):
[if count.galery>5]Много фотографий[/if]

В условиях вы можете использовать логические операторы И (&&) и ИЛИ (||). Пример:
[if date.date=сегодня && r.news_read>1000 || r.rating>50]Новость популярна![/if]
Выведет «Новость популярна!» если она добавлена сегодня и имеет больше 1000 просмотров ИЛИ рейтинг новости больше 50! Вы можете комбинировать эти операторы как хотите.

Вы можете указывать второй параметр так же дополнительные поля или другие параметры новости. Пример:
[if xfvalue_status=xfvalue_status_end]Товар закончен, только под заказ.[/if]

Модуль автоматически определяет сравнение строки и числового значения, вам больше ничего дописывать не нужно. Пример:
{title limit="45"}[if r.title>45]...[/if]

В main.tpl и в других файлах шаблона доступны следующие условия
[if info]Есть какая-то ошибка или уведомление[/if]
[if !info]Ошибки или уведомления нет![/if]

Краткие условия для проверки есть ли что-то в поле или оно пустое, пример:
[if xfvalue_count]Есть в наличии[/if]
[if !xfvalue_count]Под заказ[/if]

Параметры для условий


Описание всех параметров для условий

Параметры для краткой, полной и custom новостей а так же поиска по сайту
Параметр Описание
xfvalue_X
Значение дополнительного поля новости (где X - название дополнительного поля на латинице).
r.id
Порядковый номер новости.
r.autor
Ник автора новости.
r.date
Дата публикации новости.
r.short_story
Текст краткой новости.
r.full_story
В шаблонах краткой новости это количество символов в полном описании. В шаблоне полной новости - сам текст..
r.title
Заголовок новости.
r.metatitle
Метатег Title.
r.descr
Метатег Description.
r.keywords
Метатег Keywords.
r.category
Список категорий новости.
r.alt_name
URL новости на латинице.
r.comm_num
Количество комментариев.
r.allow_comm
Разрешены ли комментарии в новости (1 - да, 0 - нет).
r.allow_main
Опубликована ли новость на главной (1 - да, 0 - нет).
r.approve
Прошла ли новость модерацию (1 - да, 0 - нет).
r.fixed
Зафиксирована ли новость (1 - да, 0 - нет).
r.symbol
Символьный код новости.
r.tags
Теги новости.
r.news_read
Количество просмотров новости.
r.allow_rate
Разрешен ли рейтинг новости (1 - да, 0 - нет).
r.rating
Рейтинг новости, сумма всех значений.
r.vote_num
Количество проголосовавших в рейтинге.
r.votes
Есть ли опрос в новости (1 - да, 0 - нет).
r.view_edit
Отображать причину редактирования (1 - да, 0 - нет).
r.disable_index
Запрещена ли индексация новости (1 - да, 0 - нет).
r.editdate
Дата редактирования новости.
r.editor
Ник редактора новости.
r.reason
Причина редактирования новости.
r.user_id
ID автора публикации.
В новостях так же доступны условия по текущему пользователю.
user.xfvalue_X
Значение дополнительного поля новости (где X - название дополнительного поля на латинице).
user.r.email
E-mail пользователя.
user.r.name
Ник пользователя.
user.r.user_id
Id пользователя.
user.r.news_num
Количество новостей.
user.r.comm_num
Количество комментариев.
user.r.user_group
Id группы пользователя.
user.r.lastdate
Последняя дата входа пользователя.
user.r.reg_date
Дата регистрации.
user.r.allow_mail
Разрешено ли писать на Email (1 - да, 0 - нет).
user.r.info
Подробней о пользователе.
user.r.signature
Подпись пользователя.
user.r.fullname
Полное имя пользователя.
user.r.land
Место жительства.

Глобальные теги


Инструкция по работе с глобальными тегами

Создание глобальных тегов позволяет выводить данные тегов в других tpl файлах где они не поддерживаются.
Для работы с глобальными тегами существует 4 тега:
[set-X] данные [/set]
Задает тег, где X любой произвольное название на латинице а внутри этих тегов может быть что угодно.
{global-X}
Выводит данные из тегов [set-X], где X тоже самое название что у тега [set-X].
[global-X] данные [/global]
Выводит данные из тегов если задан такой тег {global-X}, где X тоже самое название что у тега {global-X}.
[not-global-X] данные [/not-global]
Выводит данные из тегов если не задан такой тег {global-X}, где X тоже самое название что у тега {global-X}.
Пример для вывода данных из новости, fullstory.tpl, в main.tpl:
1. В fullstory.tpl делаем
[set-title]{title} {date}[/set]
2. В main.tpl вставляем в нужном месте
[global-title]{global-title}[/global]

Другие теги


Инструкция по работе с дополнительными тегами

Для новостей появились дополнительные теги, такие как:, {each}, {count}, {descr}.
{each xfvalue_X} Данные {/each}
Тег позволяет обойти дополнительные поля типа галерея или перекрестные ссылки, где X название дополнительного поля.
{src}
Работает внутри тега {each}, выводит ссылку на оригинальное изображение. [ Только для дополнительного поля типа Галерея ]
{alt}
Работает внутри тега {each}, выводит описание изображения. [ Только для дополнительного поля типа Галерея ]
{thumb}
Работает внутри тега {each}, выводит ссылку на уменьшеную копию изображения, если копии нет выводит ссылку на оригинальное изображение. [ Только для дополнительного поля типа Галерея ]
{url}
Работает внутри тега {each}, выводит ссылку страницу новостей с значением дополнительного поля. [ Только для дополнительного поля типа Перекрестные ссылки ]
{value}
Работает внутри тега {each}, выводит значение дополнительного поля. [ Только для дополнительного поля типа Перекрестные ссылки ]
{count.xfvalue_X}
Выведет число изображение или символов в дополнительном поле, где X название дополнительного поля.
{descr.xfvalue_X}
Выведет описание дополнительного поля которое указано в админ панели.

Обновление модуля


Инструкция по обновлению модуля

  • Шаг первый

    Загрузите файлы с папки Module на свой сервер.

  • Шаг второй

    Загрузить файл license.php в папку /engine/lazydev/dle_conditions/.