N1 Nex1on

Каталог вставок, доп. поля и информеры на тегах

Как вставить любой блок, список, число или форму модуля одним тегом, где работают дополнительные поля новостей и как показать чужую ленту на странице.

Обновлено 20.10.2026

Каталог вставок: любой элемент модуля — одним тегом

Каждый модуль объявляет всё, что можно вынести на любую страницу и вставить в любое место файла тегов темы: готовые блоки, списки для своей вёрстки, числа, формы и кнопки. Это единый каталог: из него строятся вкладка «Вывод на сайте» в панели модуля (таблица элементов, параметры, пример и кнопка «Копировать», файлы видов), подсказки редактора шаблонов и страницы «Справки» о каждом модуле. Полный список элементов с готовым кодом смотрите на странице модуля в «Справке» (/help/modules/имя-модуля): он всегда совпадает с тем, что есть на вашем сайте.

Как вставляется:

  • блок, форма, кнопка, число — {block:модуль.имя параметр=значение}: {block:news.count what=news period=week}; параметров до четырёх;
  • список для своей вёрстки — [each:list:модуль_имя:параметр:значение:…] … {item.поле} … [/each]: [each:list:news_latest:cat:3:sort:views:limit:5]; несколько значений — через «_», в имени списка «модуль_имя» (точка в имени тега не годится).
HTML
{block:news.count what=news period=week}
{block:subscribe.compact}
[each:list:shop_products:limit:4]<p>{item.title}</p>[/each]

Элемент вида блок, кнопка и форма сам отвечает за экранирование своего вывода (через e() и виды движка, как любой вид); число и текст — только экранированный текст без разметки; список отдаёт строки, они экранируются тегами. Параметры проверяются по описанию элемента: число — в границах, выбор — только из списка, номера — только цифры; лишнее отбрасывается. Сбой, право, которого нет, превышение времени или размера — пустая вставка, страница цела. Старые теги (news_list…, {banner:5}, [each:comments]) продолжают работать.

Модуль объявляет элемент через фильтр theme.blocks: запись «модуль.имя» с полями kind (block, list, value, form, button), title, description, params, items, example, works_in, permission, render. Готовые блоки раскладки модулей (то, что модуль кладёт в места темы) попадают в каталог сами.

Безопасность тегов

  • формы рисует только движок: в файле тегов тег form вычищается, поэтому ключ защиты и поля всегда на месте; форму выводит {form};
  • разметка шаблона очищается по белому списку: без скриптов, стилей, фреймов, обработчиков событий и атрибутов data-*; адреса только http(s)://, /путь, #;
  • значения экранируются по месту (в тексте, в атрибуте, в адресе — по-разному);
  • пределы те же, что у языка тегов: размер шаблона 20000 знаков, 400 тегов, вложенность 6, повторов 200;
  • письма в файлах тегов не нужны: их тексты правятся в «Почта → тексты писем».

Дополнительные поля новостей: где работают

Поля заводятся в разделе «Доп. поля» (хозяин «Новости», можно ограничить рубриками). Пустое поле нигде не показывается: ни значение, ни подпись.

ГдеЧто писатьУсловие
Полная запись{field:имя}, {fieldlabel:имя}, [if:field:имя], {fieldurl:имя}поле видно этому читателю
Карточка ленты (index.tpl.html, [each:cards]){item.field:имя}, {item.fieldlabel:имя}, {item.fieldurl:имя}, [if:item.field:имя]галочка «в списке»; у закрытой записи (под паролем) полей нет
Списки и блоки ([each:news_list …], [each:list:news_latest], {block:news.latest_box})те же теги с item.то же
Отбор записей[each:news_list field:год>2000 field:жанр=драма], custom=имя (заполнено), custom=имя is=значениеполе с галочкой «фильтр» (иначе список пуст, а не вся лента)
Значение ссылкой («Режиссёр: Нолан» → все записи с этим значением)автоматически на странице записи; в списках — {item.fieldurl:имя} в адресе ссылки; адрес вида /news/рубрика?field=имя&value=значениегалочки «фильтр» и «значение ссылкой»; виды: строка, список-выбор, число, дробь
Поиск в панелистрока поиска по списку записей находит значения полейгалочка «поиск»
RSSк описанию записи добавляется «Подпись: значение»галочка «отдавать в RSS»; только публичные поля
Замена по сайту«Поиск и замена» видит значения полей новостейправо на замену

Адрес с field=…&value=… показывает над лентой плашку «Подпись: значение» и кнопку «Сбросить отбор». Закрытые поля (только для персонала, по ролям) тегами и в RSS не отдаются.

Информеры: чужие ленты на странице

В разделе «Контент → Информеры» владелец подключает ленту другого сайта (RSS, Atom или JSON) под коротким именем. Сайт показывает последнюю сохранённую копию и не ждёт чужой сервер; копию обновляют по расписанию. Вставляется блоком или списком в любое место любого вида:

Что писатьЧто выйдет
{block:site.informer name=ИМЯ limit=5}готовый список ссылок на записи ленты (text=1 — с кратким текстом)
[each:list:site_informer_list:name:ИМЯ:limit:5] … [/each]свой вид каждой записи

В записи списка: {item.title} {item.url} {item.date} (по формату сайта) {item.date_iso} {item.text} (краткий текст, без разметки) {item.by} {item.category} {item.image} (адрес первой картинки; пусто, если её нет) {item.image2} {item.image3} (вторая и третья, если есть в ленте) {item.images_count} (сколько картинок, до трёх). Для источников JSON — ещё поля, названные владельцем ({item.поле}).

Что чужого приходит: только заголовок, ссылка, дата, краткий текст, автор, рубрика и адрес картинки — простым текстом и только по http(s). Сама картинка на сайт не копируется: браузер посетителя берёт её с чужого сервера, если тема выводит {item.image}. Ссылки идут с rel="nofollow noopener noreferrer ugc".

HTML
[each:list:site_informer_list:name:novosti:limit:3]
  <article>[if:item.image]<img src="{item.image}" alt="" loading="lazy">[/if]
    <a href="{item.url}" rel="nofollow noopener">{item.title}</a>
    <small>{item.by} · {item.category} · <time datetime="{item.date_iso}">{item.date}</time></small></article>
[/each]
Помогла ли эта статья?
На этой странице