TPL-IF by Sander v.2.3.1 для DLE

TPL-IF by Sander v.2.3.1

TPL-IF by Sander v.2.3.1

Расширение функционала стандартного шаблонизатора с помощью тегов условий 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
[if date.date='2017-10-25'] дата публикации 2017-10-25 [/if]
[if 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 - разрешить комментарии



Для DLE 14.1 и старше


Начиная с этой версии, в код движка была добавлена обработка тегов [if ...]...[/if] и это стало причиной конфликта в использовании этого модуля.
Во избежание конфликта с тегами движка, достаточно в моем модуле добавлять числовой индекс, пример:
[if1 ...]...[else1]...[/if1]


Версия DLE: 13.0 - 17.1

tpl-if-by-sander.xml [8,15 Kb] (cкачиваний: 16)

История изменений


v.2.3.1 - 29.09.2024
+ Добавлена поддержка DLE 17.1

v.2.2 - 01.08.2022
* Изменен метод проверки лицензии. Теперь модуль может работать одновременно на нескольких зеркалах
* Немного оптимизирован код для вложенных условий.
- Удалена поддержка PHP версии 5.x и 7.0
+ Добавлена поддержка работы модуля в main.tpl при просмотре полной новости


С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (62)
  1. foto
    Посетитель 26 октября 2017 10:05 #
    Можно сравнение с аналогичным модулем от Gamer'а?
    Как тут дела с кешированием?
    В инклюдных шаблонах тоже работает?
    Можно ли заставить работать во всех шаблонах? Включая доп.модули?

    Привязка переменных идёт по колонкам таблицы данных, или по $tpl->set()? Или переменные вообще предустановленные, и для добавления своих кастомных колонок нужно править код модуля?
    +1
    1. foto
      Администратор 26 октября 2017 10:24 #
      Можно сравнение с аналогичным модулем от Gamer'а?
      Вы можете ознакомиться с описанием модулей и увидеть отличия. Как программно реализован его модуль мне не известно.

      Как тут дела с кешированием?
      Работа с кешем в данном случае будет занимать больше времени, что сама работа модуля.

      В инклюдных шаблонах тоже работает?
      Да.

      Можно ли заставить работать во всех шаблонах? Включая доп.модули?
      Можно, но не во всех. В некоторых шаблонах это будет проблематично, к примеру addcomments.tpl, addnews.tpl, info.tpl и т.п.

      Привязка переменных идёт по колонкам таблицы данных, или по $tpl->set()? Или переменные вообще предустановленные, и для добавления своих кастомных колонок нужно править код модуля?

      Модуль принимает массив данных, в случае с новостями и комментариями это переменная $row
      TplIf::setRow($row);

      С тем же успехом можно скормить ассоциативный массив:
      TplIf::setRow([
          'field_string' => 'значение',
          'field_integer' => 54,
          'field_date' => 1509002550
      ]);


      В шаблоне будет:
      [if field_integer>20] ... [/if]
      [if date.field_date='2017-10-26'] ... [/if]
      0
      1. foto
        Посетитель 26 октября 2017 17:31 #
        Цитата: Sander
        Вы можете ознакомиться с описанием модулей и увидеть отличия. Как программно реализован его модуль мне не известно.

        Ваш метод основан на str_replace и т.д. или компилируемый код (преобразование в php код)?
        Цитата: Sander
        Работа с кешем в данном случае будет занимать больше времени, что сама работа модуля.

        Имел ввиду попадает ли работа модуля в кеш кратких новостей например, или каждый раз будет идти обработка шаблона?
        Цитата: Sander
        Можно, но не во всех. В некоторых шаблонах это будет проблематично, к примеру addcomments.tpl, addnews.tpl, info.tpl и т.п.

        Цитата: Sander
        Модуль принимает массив данных, в случае с новостями и комментариями это переменная $row

        В принципе как у Gamer'а, но у него вроде как в любых шаблонах работает.
        Может реализуете во всех шаблонах? Тогда цены ему не будет.
        Цитата: Sander
        В шаблоне будет:

        А как вывести саму переменную шаблоне? Только стандартным методом через $tpl->set()?
        0
        1. foto
          Администратор 26 октября 2017 18:05 #
          Ваш метод основан на str_replace и т.д. или компилируемый код (преобразование в php код)?
          Ни то ни другое. preg_match, preg_replace_callback, switch, if.

          Имел ввиду попадает ли работа модуля в кеш кратких новостей например, или каждый раз будет идти обработка шаблона?
          В короткой новости (и custom) кешируется полностью весь контент, готовый сформированный шаблон. Все теги соответственно тоже. В полной новости кешируется только запрос в БД, обработчик выполняется каждый раз.

          В принципе как у Gamer'а, но у него вроде как в любых шаблонах работает.
          Может реализуете во всех шаблонах? Тогда цены ему не будет.
          Я подумаю над этим.

          А как вывести саму переменную шаблоне? Только стандартным методом через $tpl->set()?
          Модуль не имеет никакого отношения к выводу данных.
          0
          1. foto
            Посетитель 26 октября 2017 19:41 #
            Цитата: Sander
            Ни то ни другое. preg_match, preg_replace_callback, switch, if.

            Это печально, нагрузка и скорость при обилии условий будет не очень маленькой, тестировал шаблонизатор DLE и свой нативный на PHP подобной логике, разница в десятки раз. Ваш работает по подобию DLE-шного, только условия посложнее.
            Цитата: Sander
            В короткой новости (и custom) кешируется полностью весь контент, готовый сформированный шаблон. Все теги соответственно тоже. В полной новости кешируется только запрос в БД, обработчик выполняется каждый раз.

            Это мне известно, просто инструкции по установке в свободном доступе нет, по этому и не совсем понятна точная реализация и момент парсинга условия.
            Цитата: Sander
            Я подумаю над этим.

            т.е. сейчас по идее можно самому подключить код модуля в нужных шаблонах и передать туда массив со значениями устанавливаемых переменных? По идее тоже сойдёт, у кого руки прямые, те сделают себе и там условия.
            Цитата: Sander
            Модуль не имеет никакого отношения к выводу данных.

            Просто хотел понять, можно ли его в своих модулях использовать как шаблонизатор, или всё таки придётся и DLE-шный подключать.
            0
            1. foto
              Администратор 26 октября 2017 21:06 #
              Это печально, нагрузка и скорость при обилии условий будет не очень маленькой, тестировал шаблонизатор DLE и свой нативный на PHP подобной логике, разница в десятки раз. Ваш работает по подобию DLE-шного, только условия посложнее.
              В полной новости каждый раз выполняться обработка более 100 функций preg_* и более 200 str_replace и более 300 if-else. И все они выполняются практически мгновенно. На фоне этого нагрузка от модуля ничтожная.
              Нативность - это конечно хорошо, но в таком случае необходимо исключить возможность редактирования шаблонов через web-интерфейс.

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

              DLE-шный шаблонизатор не обязательно подключать. Модуль обработает любой шаблон согласно заданным параметрам.
              Нижеуказанный код подключается перед $tpl->compile('content');
              		TplIf::rowSet($row);
              		$tpl->copy_template = preg_replace_callback( 
              			"#...#is", 
              			"myFunction", 
              			$tpl->copy_template
              		);

              Вы можете перед $tpl->compile('content'); вставить var_dump($tpl->copy_template); и увидите с какими данными работает модуль. Ему без разницы как и что выводится в шаблоне. Он работает по своим ключам.
              0
              1. foto
                Посетитель 26 октября 2017 21:48 #
                Цитата: Sander
                В полной новости каждый раз выполняться обработка более 100 функций preg_* и более 200 str_replace и более 300 if-else. И все они выполняются практически мгновенно. На фоне этого нагрузка от модуля ничтожная.
                Нативность - это конечно хорошо, но в таком случае необходимо исключить возможность редактирования шаблонов через web-интерфейс.

                Достаточно качественно фильтровать входящие значения... ;)
                Я тестировал на тысячах и десятках тысяч условий, что бы получить более полную картину на высоко нагруженных проектах.
                Цитата: Sander
                DLE-шный шаблонизатор не обязательно подключать. Модуль обработает любой шаблон согласно заданным параметрам.

                Если нет встроенной функции вывода переменной, то придётся или писать код на str_replace, или подключать встроенный DLE-шный шаблонизатор. В принципе не так критично.

                В принцепе модуль нормальный, но от Gamer'а умеет ещё и это:
                Полное соответствие тегам PHP. В версии v3 теперь есть возможность использовать в одной проверке теги "&&" и "||".
                Хак работает во всех tpl файлах. Если tpl файл вызывается стандартным шаблонизатором DLE!

                Что будет ещё у него в версии 5.1 не известно, но что то явно будет... ;)

                В скрипт бы добавить ещё удаление новости и запись в лог DLE, доски объявлений сожрут вас и ваш модуль сразу, беглым набегом)
                А так же смена категории на categories_add=1,2,3,4,5 и просто добавление категории с проверкой присутствует ли новость уже в ней (как был баг в админке DLE, когда два раза одну категорию в ячейку прописывало).
                Попутно можно так же сделать и исключение из категории categories_delete=1,2,3,4,5.

                А так вполне годный модуль.
                Ну и скрипт операций с новостями у вас как бонус такой не хилый)
                0
  2. foto
    Клиент 31 октября 2017 13:15 #
    Ну что же могу сказать - работа отличная. Придется свой не много апгрейднуть тогда :) Только я все же думал сделать вложенные условии
    [if ...]
        [if ...]
            ....
        [else]
            ...
        [/if]
    [/if]
    Но реализация с числовыми if мне понравилась. Только не понятно почему так долго не было обновления? Ведь мог давно его обновить.
    0
    1. foto
      Администратор 31 октября 2017 13:20 #
      Сам функционал я его еще год назад сделал, лень было оформить и опубликовать :)
      +1
      1. foto
        Клиент 31 октября 2017 13:22 #
        p.s у письмо на активацию аккаунта попадает в спам. Почта gmail.
        +1
      2. foto
        Посетитель 31 октября 2017 13:55 #
        Возможны ли нормальные вложенные условия (без номера условия)?
        Или возможно это сделать?
        0
    2. foto
      Посетитель 31 октября 2017 13:45 #
      Лучше не надо, я сразу не заметил этот бред, только хотел написать и вы опередили...
      [ifN - это дичайший пи...
      Нужна нормальная php логика со всеми её плюсами, а не сидеть и считать количество и отношение определённых if, else и if и искать где ошибся с номером.
      PS: В сложных условиях это будет садомазо.
      0
      1. foto
        Клиент 31 октября 2017 13:58 #
        Хм, красота в буковках или хорошая производительность? Ибо рекурсивные шаблоны в данном случае будут не из легких.
        0
        1. foto
          Посетитель 31 октября 2017 14:22 #
          Сломать мозг работая с овер 10-уровневыми условиями, или сломать сервер? smirk
          0
          1. foto
            Посетитель 11 октября 2018 16:40 #
            Интересно увидеть пример такой конструкции и то, что же можно туда напихать.
            0
      2. foto
        Посетитель 11 октября 2018 16:33 #
        Мне кажется цифры ничего не определяют, они лишь помогают главному регулярному выражению получить всё содержимое внутри блока от [if] и до [/if]. А если не использовать цифры регулярное выражение не будет учитывать всё после первого вхождения [/if] А ведь после него может быть [else] aasd [/if].

        Я думаю все цифры потом стираются.

        0
        1. foto
          Администратор 11 октября 2018 17:21 #
          Нумерация нужна только для вложенности.
          Алгоритм работы тут не построчный разбор php интерпретатором, а основан на регулярных выражениях. Иначе по простому я пока не вижу иных вариантов как сделать.
          Пример как обработчик увидит код:
          [if условие]
          [if условие2]
          да, условие 2

          [/if]
          [/if]


          В итоге в шаблоне будет:
          да, условие2
          [/if]


          Числовой индекс нужен только чтобы обработчик отличал вложенные условия.
          0
          1. foto
            Посетитель 12 октября 2018 06:28 #
            Я так и думал, иначе говоря можно даже нумеровать только сам вложенный if, остальные блоки нет смысла нумеровать ведь так ?

            Иначе по простому я пока не вижу иных вариантов как сделать.

            А если я скажу, что можно ? Но вы просто не хотели искать варианты.

            Алгоритм работы тут не построчный разбор php интерпретатором

            Вот смотрю ваш и, PunPun'a, везде в примерах написано в одну строку. Такое будет работать ?

            0
            1. foto
              Администратор 12 октября 2018 10:55 #
              можно даже нумеровать только сам вложенный if

              Если быть точным, то нумеровать нужно (!) только вложенные условия. В остальных случаях нет необходимости в индексе вложенности.


              А если я скажу, что можно

              То мне будет очень интересно ознакомиться с таким решением. С рабочим решением.


              везде в примерах написано в одну строку. Такое будет работать ?

              Статью вообще не читали? Даже комментарий выше, где в примере код не в одну строку.
              0
              1. foto
                Посетитель 12 октября 2018 13:32 #
                Если быть точным, то нумеровать нужно (!) только вложенные условия. В остальных случаях нет необходимости в индексе вложенности.

                Я о таком варианте. Или же даже вложенные elseif и else требуется нумеровать ?

                Статью вообще не читали? Даже комментарий выше, где в примере код не в одну строку.

                Очень даже читал и для меня всё в одну строчку, в смысле:
                0
              2. foto
                Администратор 12 октября 2018 13:45 #
                Количество строк не играет абсолютно никакой роли.
                Жду вашего варианта решения задачи.
                0
  3. foto
    Клиент 31 октября 2017 13:20 #
    Хм, а почему нельзя использовать || и && если значения числовые?

    Цитата: SKYNET74
    Это печально, нагрузка и скорость при обилии условий будет не очень маленькой, тестировал шаблонизатор DLE и свой нативный на PHP подобной логике, разница в десятки раз. Ваш работает по подобию DLE-шного, только условия посложнее.

    Не верно, у меня такой же способ реализации через preg_match, switch и if - работает быстро, никаких просадок в скорости загрузки не заметно и быть по идеи не может.
    0
    1. foto
      Администратор 31 октября 2017 13:22 #
      [if rating>4 && comm_num>10 || news_read>100 && votes>5] ... [/if]
      Какой приоритет условий, где скобки ставить?
      Казнить нельзя помиловать.
      [if rating>4 && (comm_num>10 || news_read>100) && votes>5] ... [/if]
      Если так, то все логично:
      Если рейтинг хороший и (много комментов или просмотров) и много оценок то ...
      Будет показан текст, если у новости хорошая активность и хороший рейтинг со многими оценками

      А так уже имеем другую логику...
      [if (rating>4 && comm_num>10) || (news_read>100 && votes>5)] ... [/if]
      Те же параметры. Но уже будет другой результат.
      Получится, что у новости может быть много просмотров, но низкий рейтинг. А может быть только одна хорошая оценка, но много комментов.
      0
      1. foto
        Клиент 31 октября 2017 13:31 #
        Для этого я написал функцию которая разбивает по || потом смотрит есть ли там && проходит по массиву && и если первое условие срабатывает то отдает и так далее.
        0
        1. foto
          Администратор 31 октября 2017 13:45 #
          Пожалуй тоже вариант.
          Но он исключает возможность приоритета.
          К примеру:
          [if rating>4 && comm_num>10 || news_read>500] ... [/if]

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

          А если нужна иная логика:
          Чтобы текст был показан только если хороший рейтинг и у новости есть комментарии или много просмотров.

          PS. Зачем дублировать trim() в цикле если его можно вынести в функцию.
          Почему не используешь foreach ?
          0
          1. foto
            Клиент 31 октября 2017 13:57 #
            Но так же и в самом PHP, если условие первое не подходит то вслед за ним идет другое, если же оно не верно (false) то не заходит внутрь if.
            Цитата: Sander
            Чтобы текст был показан только если хороший рейтинг и у новости есть комментарии или много просмотров.

            [if rating>10 && comm_num>0 || rating>10 && views>100] ... [/if]
            Так, разве нет?

            Цитата: Sander
            PS. Зачем дублировать trim() в цикле если его можно вынести в функцию.
            Почему не используешь foreach ?

            Это довольно старый код, я его не марафетил даже.

            Всего не сделаешь, чем-то нужно пожертвовать, но в данном случае жертва минимальна, приоритет как бы сохраняется и как бы нет.
            0
  4. foto
    Клиент 6 июня 2018 20:23 #
    Здравствуйте!

    Не подскажите, планируется ли обновление модуля с учетом внедрения системы управлениями плагинами в DLE 13?

    Поскольку, на данный момент, не вижу возможности автоматической его установки.
    0
    1. foto
      Администратор 6 июня 2018 21:47 #
      Через пару минут сделаю плагин.

      Поскольку, на данный момент, не вижу возможности автоматической его установки.

      Вы можете легко создать плагин самостоятельно. В некотором роде для этого эта система управления плагинами и была создана.
      https://sandev.pro/blog/137-kak-ustanovit-staryy-modul-na-dle-130-v-novoy-sisteme-upravleniya-plaginami.html

      UPD: Архив с модулем обновил.
      +1
  5. foto
    Клиент 18 июля 2018 01:49 #
    Доброй ночи! Подскажете как вывести определенный текст на главной и строго в определенный категории?
    0
    1. foto
      Администратор 18 июля 2018 09:07 #
      Данный модуль предназначен для работы только в шаблоне полной или короткой новости (и custom).
      На главной можете использовать стандартный тег:
      [category=7] где 7 - ID категории [/category]


      Если в новости, то тег модуля:
      [if category='7'] Новость отмечена только в одной категории, id = 7 [/if]


      Отличие от стандартного тега catlist в том что выполняется строгое соответствие строки (в БД категории прописаны через запятую).
      [catlist=7] Новость может быть отмечена в любых категориях, главное чтобы среди них была категория id = 7 [/catlist]
      0
      1. foto
        Клиент 18 июля 2018 12:41 #
        Стандартный тег к сожалению не подходит он не работает в паре из [aviable=main] получаеться либо в категории фиксируем либо на главной.
        0
  6. foto
    Клиент 31 июля 2018 21:58 #
    Полная новость (fullstory) запоняетсья только доп полями, но пришлось расшырить функционал и добавил такую строку:
    <li><label>Описание вакансии:</label><span>  {full-story} </span></li>

    Как можно задать через условия если данное поле не заполнено то вырезать его из шаблона?
    0
    1. foto
      Администратор 31 июля 2018 22:02 #
      [if full_story]<li><label>Описание вакансии:</label><span>  {full-story} </span></li>[/if]
      +1
  7. foto
    VIP 3 августа 2018 23:43 #
    НА 7,2 не идёт, и с другими модулями заёбся устанавливая
    0
  8. foto
    VIP 3 августа 2018 23:43 #
    engine\mods\TplIf\Class\72.php encoded as type [1/72] cannot be decoded by this version of the ionCube Loader.
    0
    1. foto
      Администратор 4 августа 2018 09:58 #
      Обновите версию ionCube Loader до актуальной 10.x
      И убедитесь, что он правильно установлен и работает. Как это сделать - описано тут
      0
  9. foto
    Посетитель 19 сентября 2018 05:09 #
    Конструкции подобного вида когда-нибудь появятся?
    [if rating>=5 && news_read>100 || comm_num>20]Горячая новость[/if]

    У конкурентов давно есть.
    0
  10. foto
    VIP 7 февраля 2019 23:30 #
    А вы сможете помочь написать код и реализовать задумку с этим модулем?
    Идея такова, что когда доп поле не заполнено, новость попадает в определенную категорию, когда оно становиться со временем заполнено модуль удаляет с этой категории новость.
    0
  11. foto
    Клиент 27 июля 2019 17:30 #
    ionCube not Installed OR unsupported PHP version

    Я использую сервер с PHP 7.3 (Phalcon 3, ionCube, Zend OPCache)

    Может быть, вы можете это исправить?
    0
    1. foto
      Администратор 27 июля 2019 17:44 #
      Обновил архив.
      +1
  12. foto
    Клиент 27 июля 2019 23:29 #
    Внимание! У Вас нет прав для просмотра скрытого текста.

    Теперь показывает эту ошибку
    0
    1. foto
      Администратор 27 июля 2019 23:42 #
      Для получения техподдержки лучше свяжитесь со мной по любому из указанных справа контактов.

      PS. Для решения вашего вопроса нужен фтп.
      0
  13. foto
    Клиент 11 мая 2020 14:18 #
    Добрый день! Верно ли понимаю, что данная конструкция не работает из-за отсутствия поддержки лайков - [if likes>=5][/if]? Только можно через {rating} получается?
    0
    1. foto
      Администратор 11 мая 2020 16:39 #
      Внимание! У Вас нет прав для просмотра скрытого текста.
      0
  14. foto
    Гость 9 июля 2020 23:16 #
    Как заставить работать шаблонизатор условий 2.0 в шаблоне attachments.tpl ? Спасибо
    0
    1. foto
      Администратор 10 июля 2020 09:44 #
      Добрый день.
      В теории это возможно, но нужно делать, проверять.
      0
  15. foto
    Клиент 16 июля 2020 11:06 #
    Добрый день! Подскажите, пожалуйста, будет ли работать шаблонизатор на PHP 7.3/PHP 7.4?
    0
    1. foto
      Администратор 16 июля 2020 14:04 #
      Добрый день.
      На 7.3 будет.
      На 7.4 пока нет. ionCube Loader еще не поддерживает эту версию
      0
      1. foto
        Клиент 30 сентября 2020 21:15 #
        А работает ли на версии 14.1? Очень похоже, что конфликт из-за аналогичного нововведения в последней версии
        0
        1. foto
          Администратор 1 октября 2020 13:32 #
          Цитата: Crashlabs
          Очень похоже, что конфликт из-за аналогичного нововведения в последней версии

          К сожалению да.
          Новый функционал полностью перекрывает использование записи:
          [if ...]...[/if]


          НО! Есть лайфхак :)
          Мой модуль поддерживает вложенные конструкции вида:
          [if1 ...]...[/if1]

          И такая запись уже никоим образом не конфликтует с DLE-ными тегами.
          0
  16. foto
    Посетитель 11 октября 2020 12:46 #
    Добрый день, будет ли работать в комментариях на dle 14.1

    [if {comm-num} <20] ЗВАНИЕ: НОВИЧОК[/if] т.е.

    Если у автора комментария всего комментариев на сайте меньше 20 то под аватаркой выведется надпись ЗВАНИЕ: НОВИЧОК
    0
    1. foto
      Администратор 11 октября 2020 22:47 #
      Да.
      Но для DLE 14.1 нужно будет так:
      [if1 {comm-num} <20] ЗВАНИЕ: НОВИЧОК[/if1]

      Чтобы избежать конфликта с новыми штатными тегами (хотя не знаю, есть ли они в комментах).
      0
  17. foto
    Гость 23 августа 2021 10:23 #
    news_id > 2000 есть такая функция?
    0
    1. foto
      Администратор 23 августа 2021 10:30 #
      Есть, только
      [if id > 2000]...[/if]
      0
  18. foto
    VIP 20 февраля 2022 17:17 #
    Можно ли создать условие-проверку доп поля типа галерея, на количество картинок?:
    >6, <6, >=6
    ?

    Или возможно стандартными средствами DLE это возможно реализовать? (копался в документации DLE, так и не нашёл решения)
    Подобные стандартные if не считают кол-во изображений в поле - [if xfield_mainscr >= "6"]текст[/if]
    0
  19. foto
    Посетитель 13 июня 2022 20:26 #
    В этом модуле можно вывести текст для всех новостей, ID которых больше 3000?
    0
    1. foto
      Администратор 14 июня 2022 13:40 #
      Если задача только в этом, то проще отдельный тег добавить.
      engine/modules/show.full.php
      Найти строку:
      		$news_found = true;

      Ниже вставить:
      		$tpl->copy_template = preg_replace_callback('#\\[id(>|<|=)(\d+)\\](.*?)\\[/id\\]#is', function($m) use ($row) {
      			$id = (int)$m[2];
      			if ($m[1] == '>') {
      				return $row['id'] > $id ? $m[3] : '';
      			} elseif ($m[1] == '<') {
      				return $row['id'] < $id ? $m[3] : '';
      			} else {
      				return $row['id'] == $id ? $m[3] : '';
      			}
      		}, $tpl->copy_template);


      В шаблоне теги:
      [id>3000] показывать если ID новости 3001 и больше [/id]
      [id<5000] показывать если ID новости 4999 и меньше [/id]
      [id=1000] показывать если ID строго равен 1000 [/id]

      PS. В актуальной версии DLE есть поддержка работы тегов условий
      [if field>10] ... [/if]
      0
  20. foto
    Посетитель 25 июня 2022 14:52 #
    Ниже вставить:
    		$tpl->copy_template = preg_replace_callback('#\\[id(>|<|=)(\d+)\\](.*?)\\[/id\\]#is', function($m) use ($row) {
    			$id = (int)$m[2];
    			if ($m[1] == '>') {
    				return $row['id'] > $id ? $m[3] : '';
    			} elseif ($m[1] == '<') {
    				return $row['id'] < $id ? $m[3] : '';
    			} else {
    				return $row['id'] == $id ? $m[3] : '';
    			}
    		}, $tpl->copy_template);


    А как добавить сюда возможность через запятую указывать [id>1,2,3] [/id]
    0
    1. foto
      Посетитель 25 июня 2022 16:52 #
      только со знаком =
      0
  21. foto
    Посетитель 6 октября 2022 17:52 #
    Скажите, а есть возможность получить текущую дату для сравнения с доп. полем типа дата?
    0
    1. foto
      Администратор 8 октября 2022 21:39 #
      К сожалению нет, такой возможности нету.
      0
  22. foto
    Гость 9 декабря 2022 13:35 #
    Добрый день, будет ли условия работать в шаблоне categorymenu DLE 15.2?
    Например, [if1 {news-count} != 0] показать категорию [/if1]
    Спасбо.
    0
Добавить комментарий

Внимание! Все сообщения касающиеся техподдержки будут удалены или проигнорированы

Attention! All messages asking for technical support will be removed or ignored

  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2024.
При копировании, ссылка на источник обязательна.