Шаблон запису на тегах: картка фільму
Сторінка запису — не PHP-файл, а текст із розміткою та тегами: його правит власник сайту в панелі.
Сторінка запису — не PHP-файл, а текст із розміткою та тегами: його правит власник сайту в панелі. Тег підставляє значення запису або поля, умова показує шматок лише коли значення є, повтор проходить за списком (жанри, мітки, галерея). Попередній текст не зникає: зберігається останніх 20 версій, у кожної є кнопка «Повернути».
Готовий зразок: «Кінотеатр»
У «Новини → Шаблони записів» натисніть «Встановити «Кінотеатр»»: зʼявляться рубрика «Фільми», 8 власних полів (постер, рік, країна, жанри, тривалість, оцінка, у ролях, трейлер), шаблон сторінки та три зразки записів. Повторне встановлення нічого не дублює; зразки прибираються кнопкою «Прибрати зразки».
Текст шаблону сторінки:
<div class="news-custom news-custom--film">
[if:field:poster]<div class="news-custom__poster">{field:poster size=300x450}</div>[/if]
<div class="news-custom__info">
<h1>{title}</h1>
<dl>
[if:field:year]<dt>{fieldlabel:year}</dt><dd>{field:year}</dd>[/if]
[if:field:country]<dt>{fieldlabel:country}</dt><dd>{field:country}</dd>[/if]
[if:field:genre]<dt>{fieldlabel:genre}</dt><dd>[each:field:genre]<span>{item}</span> [/each]</dd>[/if]
[if:field:duration]<dt>{fieldlabel:duration}</dt><dd>{field:duration}</dd>[/if]
[if:field:rating]<dt>{fieldlabel:rating}</dt><dd>{field:rating}</dd>[/if]
[if:field:cast]<dt>{fieldlabel:cast}</dt><dd>{field:cast}</dd>[/if]
</dl>
</div>
<div class="news-custom__body">{body}</div>
[if:field:trailer]<div class="news-custom__trailer">{field:trailer}</div>[/if]
</div>Що видно чесно. У зразкових записів постера немає, тому блок постера не показується (умова [if:field:poster]). Стилі news-custom* тепер є в спільному шарі: підписи й значення даних вишикувано рядками, жанри — мітками, оцінку — зірками, на 390 одна колонка без горизонтального прокручування.
Що виводять теги
| Тег | Що виводить | Приклад |
|---|---|---|
{id} | номер запису | {id} |
{title}, {title limit=60} | назву (з обрізанням) | <h1>{title}</h1> |
{url} | адресу запису | <a href="{url}"> |
{site} | назву сайту | {site} |
{date}, {date format=d.m.Y} | дату публікації; без format — d.m.Y; формат із пробілами — в лапках | <time>{date format="d F Y"}</time> |
{author} | автора | {author} |
{category}, {category.url} | рубрику й адресу її сторінки | <a href="{category.url}">{category}</a> |
{excerpt}, {excerpt limit=160} | короткий текст | <p>{excerpt limit=160}</p> |
{body} | повний текст запису | {body} |
{cover}, {cover size=400x300} | обкладинку запису; без size — без розмірів | {cover size=600x400} |
{views}, {comments} | перегляди й коментарі | {views} · {comments} |
{readtime} | хвилин на читання | {readtime} хв |
{rating} | середню оцінку читачів (зірки 1–5); порожньо, якщо оцінок немає | [if:rating]★ {rating}[/if] |
{rating.count} | кількість оцінок | ({rating.count}) |
{rating.stars} | зірки готовою розміткою (лише в html) | {rating.stars} |
{likes} | кількість оцінок (у нас те саме, що {rating.count}) | {likes} |
{author.url} | адресу профілю автора | <a href="{author.url}">{author}</a> |
{comments.url} | адресу блоку коментарів запису | <a href="{comments.url}">Коментарі: {comments}</a> |
{comments.word} | слово «коментар» у потрібній формі за числом | {comments} {comments.word} |
{edit_url} | адресу правки запису (видно тим, кому дозволено) | [if:can_edit]<a href="{edit_url}">Змінити</a>[/if] |
{editor}, {edit_date format=…} | хто й коли правив запис | Правив {editor}, {edit_date format="d.m.Y"} |
{share} | кнопки «Поділитися» | {share} |
{favorite_button} | кнопку «У закладки» | {favorite_button} |
{field:ІМ'Я}, {field:ІМ'Я limit=N size=ШxВ} | значення власного поля; limit для тексту, size для зображення | {field:year} |
{fieldlabel:ІМ'Я} | підпис поля | <dt>{fieldlabel:year}</dt> |
Усередині повтору: {item}, {item.url}, {item.alt} (підпис зображення в галереї), {index} — номер від одиниці.
| Умова або повтор | Що робить | Приклад |
|---|---|---|
[if:ім'я]…[/if] | показує, якщо значення є | [if:cover]{cover}[/if] |
[ifnot:ім'я]…[/ifnot] | показує, якщо значення немає | [ifnot:excerpt]без опису[/ifnot] |
[if:ім'я=значення]…[else]…[/if] | порівняння | [if:field:rating=5]★[else]—[/if] |
[if:pinned]…[/if] | запис закріплено | [if:pinned]📌[/if] |
[if:new]…[/if], [if:updated]…[/if], [if:edited]…[/if] | запис новий (у межах news.new_hours, 24 за замовчуванням, 0 — вимкнено), оновлений (news.updated_hours), був відредагований | [if:new]<b>Нове</b>[/if] |
[if:can_edit]…[/if] | відвідувач має право правити запис | [if:can_edit]…[/if] |
[if:role=а,б]…[/if] | відвідувач із будь-якої з перелічених ролей | [if:role=editor,admin]…[/if] |
[each:tags]…[/each] | мітки запису | [each:tags]<a href="{item.url}">{item}</a>[/each] |
[each:field:ІМ'Я]…[/each] | поле з кількома значеннями (жанри, галерея) | [each:field:genre]<span>{item}</span>[/each] |
Імена для [if:…]: title, excerpt, body, cover, author, category, views, comments, tags, rating, pinned, new, updated, edited, can_edit, field:ІМ'Я. Оцінка вмикається прапорцем запису «Дозволити оцінку» та налаштуваннями «Новини» (news.rating, news.rating_guests, news.show_views): одна оцінка на читача, гостя впізнає за хешем; перегляд зараховується раз за сеанс, роботи не враховуються. У стрічці й на сторінці тегового вигляду доступні {rating}, {rating_count}, {views}, {rating_url}. Опції: limit — число 1–5000 (менше чи більше зводиться до межі), ріже за знаками з «…»; format у date — лише знаки d D j m M n Y y H i s a A g G h F, пробіл, ., /, :, -, до 20; size — ШxВ, кожен бік до 4000, інакше ігнорується.
Безпека та межі
PHP, виклик функцій і читання файлів не працюють. Розмітка очищається за білим списком (без script, style, form, iframe, on*, data-*); адреси лише http(s)://, /шлях, #. Шаблон до 20000 знаків, до 400 тегів, вкладеність до 6, повторів до 60.
Оновлено 16.10.2026
Поки ніхто не висловився. Будьте першим.