DevCraft Документации
Руководства

Условия в шаблонах DLE ([if]/[has]) v200.4.1

Как писать [if] с [else] и новый блок [has] в публичных шаблонах после установки DevCraft Admin.

Зачем это

В темах сайта часто нужно: «если поле пустое — спрятать кусок», «если комментарий есть — показать». DataLife Engine уже умеет [if …]…[/if]. DevCraft Admin 200.4.1 добавляет:

  1. ветку [else] у обычного [if];
  2. новый блок [has] — сравнение уже подставленного текста тега (например {comment}) с эталоном.

Работает только когда шаблон собирают с флагом условий: $tpl->compile('…', true). Без true маркеры остаются как текст — так задумано ядром.

Патч лежит в engine/classes/templates.class.php и ставится вместе с Admin через install.xml. Если Admin выключить, логика [else] / [has] с сайта снимается.

[if] и [else]

[if title != ""]
  Есть заголовок
[else]
  Заголовка нет
[/if]

Условие — как в штатном DLE (поля новости, доп. поля, and / or). Один [else] на уровень; внутри можно снова писать [if] или [has].

[has]

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

[has value="{comment}"]
  <span>{comment}</span>
[else]
  нет комментария
[/has]
АтрибутОбязателенПо умолчаниюСмысл
valueдачто сравниваем (часто "{тег}")
conditionнет!=оператор как у [if]
comparisonнет""с чем сравниваем (в кавычках)

Без атрибутов (кроме value) это «значение непустое»: condition = !=, comparison = "".

Что считается пустым

Пусто: нет значения, "", только обычные пробелы/табы/переводы строк.
Не пусто: текст &nbsp;, неразрывный пробел, любой другой видимый текст.

Важно

  • Не только полная новость: любой код, который вызывает compile(..., true) (короткие новости, комментарии, профиль, модули вроде Connections).
  • Битый/незакрытый блок не роняет сайт: кусок с маркерами остаётся как был.

Связанные страницы

На этой странице