Условия в шаблонах DLE ([if]/[has]) v200.4.1
Как писать [if] с [else] и новый блок [has] в публичных шаблонах после установки DevCraft Admin.
Зачем это
В темах сайта часто нужно: «если поле пустое — спрятать кусок», «если комментарий есть — показать». DataLife Engine уже умеет [if …]…[/if]. DevCraft Admin 200.4.1 добавляет:
- ветку
[else]у обычного[if]; - новый блок
[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 = "".
Что считается пустым
Пусто: нет значения, "", только обычные пробелы/табы/переводы строк.
Не пусто: текст , неразрывный пробел, любой другой видимый текст.
Важно
- Не только полная новость: любой код, который вызывает
compile(..., true)(короткие новости, комментарии, профиль, модули вроде Connections). - Битый/незакрытый блок не роняет сайт: кусок с маркерами остаётся как был.
Связанные страницы
- История изменений
- Модуль Connections: Публичный вывод — примеры в
list.tpl/item.tpl