Расширение функционала шаблонизатора новостей. Условия IF для DLE

Расширение функционала шаблонизатора новостей. Условия IF

Расширение функционала шаблонизатора новостей. Условия IF

Простой, но многофункциональный хак, позволяющий выводить заданный текст в зависимости от значения полей новости или доп. полей xfields.
Данный хак предназначен для работы только в шаблонах короткой новости, полной новости и в шаблонах тегов custom.


[Поддерживаемые поля]

id - порядковый номер новости (число)
autor - имя автора новости (текст)
date - дата публикации (число, дата в unix формате - 1384805563)
short_story - текст короткой новости (текст)
full_story - в шаблоне короткой новости это количество символов в полном описании. В шаблоне полной новости - сам текст. (число/текст)
title - текст заголовка (текст)
descr - метатег описания (текст)
keywords - метатег "ключевые слова" (текст)
category - список категорий в которых отмечена новость (в старых версиях только первый ID из списка) (текст)
alt_name - заголовок на латинице, для формирования адреса страницы. (текст)
comm_num - количество комментариев (число)
allow_comm - комментарии разрешены (число, 1/0)
allow_main - новость публикуется на главной (число, 1/0)
approve - новость прошла модерацию (число, 1/0)
fixed - новость зафиксирована (число, 1/0)
symbol - символьный код (текст)
tags - первый тег из списка тегов (текст)
news_read - количество просмотров (число)
allow_rate - рейтинг разрешен (число, 1/0)
rating - рейтинг статьи, сумма всех значений (число)
vote_num - количество проголосовавших в рейтинге (число)
votes - голосования в новости (число, 1/0)
view_edit - отображать причину редактирования (число, 1/0)
disable_index - запретить индексацию (число, 1/0)
editdate - дата редактирования (число, дата в unix формате - 1384805563)
editor - имя редактора (текст)
reason - причина редактирования (текст)
user_id - ID автора публикации (число)
xfvalue_xxx - значение доп. поля

Разумеется для некоторых из этих тегов уже предусмотрены фиксированные теги условий, такие как: [fixed]...[/fixed], [comments]...[/comments], [poll]...[/poll], [xfgiven_xxx]...[/xfgiven_xxx] и др.
Но во первых они прописаны не для всех значений и главное - не обладают той гибкостью, что предоставляет данных хак. В чем вы можете убиться посмотрев примеры ниже.


[Примеры использования]

[if id>1000]...[/if] - выведет текст для всех новостей, ID которых строго больше 1000, т.е. 1001, 1002 и т.д.
[if comm_num<=10]мало комментариев[/if] - выведет текст "мало комментариев", если в новости 10 или меньше комментариев
[if tags="2015"]Все фильмы 2015 года[/if] - выведет текст "Все фильмы 2015 года", если в новости в поле тегов введено слово "2015"
Но в то же время, если вы используете поле tags только для указания года, то можно использовать так:
[if tags<2000]ретро[/if] - если год выпуска 1999 и младше, то будет выведен текст "ретро"
[if reason!='']есть причина редактирования[/if] - выведет текст внутри тегов, если есть причина редактирования.
[if reason='']поле причины редактирования не заполнено[/if] - выведет текст внутри тегов, если причина редактирования не указана
[if short_story~'vk.com/video_ext']есть видео с вконтакта[/if] - выведет текст, если в содержимом поля встречается указанный текст

Доп.поля xfields
[if xfvalue_cost>=500]дорогой товар[/if] - если значение доп.поля `cost` больше или равно 500, то будет отображен текст внутри тегов
[if xfvalue_brand='Nokia']телефон нокия[/if] - если в доп.поле `brand` укано значение "Nokia", то будет выведен текст внутри тегов
[if xfvalue_video!~'vk.com/video_ext']нету видео с вконтакта[/if] - выведет текст, если в содержимом поля НЕ встречается указанный текст

Диапазон
[if 500<xfvalue_cost>5000]...[/if] - будет отображен текст, если значение поля в пределах 500 - 4999 включительно
[if 1000<news_read>10000]...[/if] - будет выведен текст внутри тегов, если у новости количество просмотров в пределах 1000 - 9999 включительно


[Перечень поддерживаемых операций]

x<y - строго меньше
x>y - строго больше
x>=y - больше или равно
x<=y - меньше или равно
x=y - строго равно
x!=y - не равно
x~y - строка Y встречается в поле X
x!~y - строка Y не встречается в поле X
y1<x>y2 - диапазон
где:
x - имя поля или доп.поля
y - значение, числовое или текстовое
y1 и y2 - нижняя и верхняя границы для фильтра по диапазону


[Демо]

d101.sandev.pro


[Версия DLE]
любая

[Контакты]
ICQ: 404-037-556
Skype: Sander8804
E-Mail: olalod@mail.ru

С уважением,
Олег Александрович a.k.a. Sander
Купить модуль
  • Стоимость модуля: $0
  • В комплекте: 10 лицензии
  • Стоимость дополнительной лицензии: $0
Комментарии: (18)
  1. foto
    VIP 14 февраля 2015 22:09 #
    Отличный хак, думаю много где применение найдётся!
    0
  2. foto
    Посетитель 16 февраля 2015 19:19 #
    С помощью данного хака можно выводить/скрывать текст в зависимости от не точного значения доп. поля?
    +1
    1. foto
      Администратор 16 февраля 2015 20:49 #
      Не понимаю, это как - "не точное"?
      +1
      1. foto
        Посетитель 16 февраля 2015 20:56 #
        Например если я хочу скрыть/показать контент если в доп. поле присутствует часть ссылки на видео, например http://vk.com/video_ext.php?
        +1
        1. foto
          Администратор 16 февраля 2015 21:53 #
          Добавил.
          [if field~'vk.com']...[/if] - выведет текст, если в поле встречается vk.com
          [if field!~'vk.com']...[/if] - выведет текст, если в поле НЕ встречается vk.com
          +1
  3. foto
    Клиент 20 марта 2015 08:25 #
    Использую данный хак для разного отображения новости в зависимости от категории:
    [if category!='1']тут код шаблона 1[/if]
    [if category='1']тут код шаблона 2[/if]
    При выводе через {custom...} условие не работает. Подскажите пожалуйста, в чем может быть проблема?
    0
    1. foto
      Администратор 29 марта 2015 11:45 #
      Скачайте хак заново.
      Там в конце инструкции маленькое дополнение для файла show.custom.php
      0
  4. foto
    Посетитель 31 марта 2015 18:39 #
    А если, например, где-то новость получила +1 голос (рейтинг), то как это можно выводить?
    0
    1. foto
      Администратор 2 апреля 2015 12:56 #
      vote_num - количество проголосовавших в рейтинге (число)

      [if vote_num>0]текст[/if]
      0
      1. foto
        Посетитель 2 апреля 2015 13:28 #
        Цитата: Sander
        [if vote_num>0]текст[/if]

        Нет, в смысле еще кто-то поставил +1, а уже стоял рейтинг, отличный от нуля?
        0
        1. foto
          Администратор 2 апреля 2015 13:32 #
          Так не получится.
          0
  5. foto
    Посетитель 19 августа 2015 12:21 #
    Спасибо за дополнение!
    С дополнительными полями пользователя в профиле тоже работает если добавить по аналогии код в profile.php
    0
  6. foto
    Посетитель 6 октября 2015 23:25 #
    а если xfvalue имеет одновременно несколько значений, сработает? В смысле несколько условий выполнит?
    0
  7. foto
    Посетитель 6 июля 2016 17:17 #
    Подскажите пожалуйста. Есть проблема с параметром autor не корректно работает. Можете подсказать, в чем проблема?

    [if autor={login}]Этот текст будет виден только автору новости[/if]
    [if autor!={login}]А этот текст будет виден всем кроме {login}[/if]


    PS: Не планируется ли обновление? В сторону if else elif ?
    0
    1. foto
      Администратор 6 июля 2016 18:23 #
      [if autor={login}]Этот текст будет виден только автору новости[/if]
      Этот текст будет виден всем, потому что autor и есть {login}. Т.е. autor всегда будет равен {login}.
      Для вашей реализации нужно писать отдельных хак.

      PS. Пока не планируется, не до него. Но желание обновить его - есть.
      0
  8. foto
    Посетитель 11 декабря 2016 08:14 #
    А можно сделать что бы глобально использовать хак? Не только краткой/полной/кастом
    0
    1. foto
      Администратор 11 декабря 2016 12:39 #
      В этой версии это вряд ли будет возможным.
      0
      1. foto
        Посетитель 11 декабря 2016 15:40 #
        Новая версия планируется?
        0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.