Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Модули для DLE » Шаблонизатор условий Tpl-If v.2.0 by Sander

Шаблонизатор условий Tpl-If v.2.0 by Sander


     06.11.2017    Модули для DLE    145    0 комментариев

Краткая информация о модуле (хаке)

Автор: Sander
Версия DLE: 9.6 и старше
Цена: $4
Шаблонизатор условий Tpl-If v.2.0 by Sander

Расширение функционала стандартного шаблонизатора с помощью тегов условий if, elseif, else.

Данный модуль является продолжением первой версии модуля Расширение функционала шаблонизатора новостей. Условия IF
В этой версии значительно расширен изначальный функционал, а главное добавлены elseif и else.

Область применения по умолчанию проработана под новости в основном контенте (shortstory.tpl, fullstory.tpl) и custom. Но так же модуль можно подключить и шаблоне комментариев.

В модуле поддерживается ряд логических операндов, покажу на примерах:
[if field='текст']  значение поля строго равно указанному в кавычках тексту [/if]
[if field!='текст'] значение поля не равно указанному тексту [/if]
[if field>1] значение поля строго больше единицы [/if]
[if field>=2] значение поля больше либо равно 2 [/if]
[if field<3] значение поля строго меньше 3 [/if]
[if field<=4] значение поля меньше или равно 4 [/if]
[if field~'vk.com'] в тексте поля встречается слово 'vk.com' [/if]
[if field!~'vk.com'] в тексте поля НЕ встречается слово 'vk.com' [/if]

А так же:
[if field] поле не пустое [/if]
[if !field] поле пустое [/if]
[if length.field>40] длина строки поля более 40 символов [/if]


Для полей с датой можно использовать префикс `age.` для получения 'возраста', значение в днях.
[if age.date<=7] дата публикации не более 7 дней назад [/if]
[if age.editdate<=1] сегодня новость была отредактирована [/if]

Так же можно использовать префикс `date.` для использования даты в формате YYYY-MM-DD
[id date.date='2017-10-25'] дата публикации 2017-10-25 [/if]
[id date.date='today'] новость опубликована сегодня [/if]


Если необходимо проверить просто есть ли что-то в поле или оно пусто (не существует), то можно использовать короткую запись:
[if xfvalue_image] картинка есть [/if]
[if !xfvalue_cost] цена не указана [/if]
[if xfvalue_allow_cart && xfvalue_cart_count] есть в наличии [/if]
[if xfvalue_allow_cart && !xfvalue_cart_count] под заказ [/if]

Пример запись:
[if fixed]
	новость зафиксирована 
[else]
	новость не зафиксирована
[/if]

Является аналогом:
[fixed]
	новость зафиксирована
[/fixed]
[not-fixed]
	новость не зафиксирована
[/fixed]


Использование {include file="...php"}
Шаблонизатор DLE обрабатывает подключение php файла в самом конце, в обработчике $tpl->compile();
Данный же модуль обрабатывает данные на лету, что позволяет подключать некий php обработчик который будет выполнять какие-либо действия над новостью при совпадении заданных условий.
К примеру нужно переносить новость в "архив" или убирать с главной если рейтинг достигает некоего порогового значения.
[if category_id!=13 && rating<10]{include file="engine/mods/post_move_archive.php?id={news-id}"}[/if]
[if allow_main && rating<10]{include file="engine/mods/post_move_from_main.php?id={news-id}"}[/if]


Модуль включает в себя возможность вложенных условий, пример:
[if age.date<=7]	<!-- новость была опубликована менее 7 дней назад -->
	[if1 news_read>1000]
		Просматриваемый материал с
		[if2 rating>=4]
			высоким рейтингом!
		[elseif2 rating>=3]
			сомнительным рейтингом.
		[else2]
			низким рейтингом.
		[/if2]
		[if2 comm_num>50]
			Обсуждаемая тема
		[/if2]
	[elseif1 news_read>500]
		Набирает популярность
		[if2 comm_num>30]
			и активно обсуждается
		[/if2]
	[/if1]
[/if]

[if comm_num>10 && news_read>1000]
	новость популярная
	[if1 comm_num>50] и обсуждаемая![/if1]
[/if]


Можно комбинировать условия с помощью операндов && (И) или || (ИЛИ).
[if xfvalue_kp_rating>8 || xfvalue_imdb_rating>8]
	Хороший фильм
[elseif xfvalue_kp_rating>6 || xfvalue_imdb_rating>6]
	Так себе, но посмотреть можно
[elseif xfvalue_kp_rating || xfvalue_imdb_rating]
	плохой фильм
[else]
	рейтинг еще не известен
[/if]


Обновление со старого формата
Старая запись:
[if 5<xfvalue_rating>8] рейтинг находится в пределах между 5 и 8 [/if]

Новая запись:
[if xfvalue_rating>=5 && xfvalue_rating<=8] ... [/if]


ВАЖНО!
При использовании нескольких параметров в одном условии допустимо использование только одного операнда, || или &&
Правильно:
[if rating>4 || news_read>1000] хороший рейтинг или много просмотров [/if]
[if rating<4 && news_read>100 && comm_num=>5] плохой рейтинг, просмотров более 100 и написано 5 или более комментариев [/if]

НЕ правильно:
[if rating>4 && news_read>50 || comm_num>10] ... [/if]


[+] Бонус
В комплекте с модулем идет скрипт обновления информации о новости.
Пример, если рейтинг стал -10, то убираем новость с главной:
[if allow_main && rating<=-10]{include file="engine/mods/postMove.php?news_id={news-id}&allow_main=0"}[/if]

где строка engine/mods/postMove.php?news_id={news-id} обязательная, дальше параметры:
&category=7 - переместить в категорию ID=7
&approve=0 - отправить на модерацию
&allow_main=0 - убрать с главной
&allow_main=1 - выводить на главной
&fixed=0 - снять фиксацию
&fixed=1 - зафиксировать новость
&allow_comm=0 - запретить комментарии
&allow_comm=1 - разрешить комментарии


Информация
Стоимость модуля: 4wmz
Лицензия выдается под 1 сайт.
Стоимость доп.лицензии: 2wmz
Для работы модуля - требуется ionCube Loader v.6.x

Версия DLE: 9.6 и старше
Версия PHP: 5.3 - 7.1 (возможно и 7.2)

Купить: shop.sandev.pro

ICQ: 404-037-556
Skype: Sander8804
E-Mail: olalod@mail.ru

С уважением,
Олег Александрович a.k.a. Sander
Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх