← Документация
Разработчикам и интеграторам

Модули FoxCoreCMS

Экземпляры, данные и файловые шаблоны модулей.

Проверено для версии: FoxCoreCMS 1.1.1Обновлено: 26.09.2026

Общий принцип

Модуль — тип функциональности. Экземпляр — его конкретная настройка. Например, у модуля «Меню» могут быть экземпляры «Главное меню», «Мобильное меню» и «Меню подвала».

Обычный порядок работы:

  1. установить модуль;
  2. создать или открыть экземпляр;
  3. дать экземпляру понятное название;
  4. выбрать его файловый шаблон;
  5. заполнить настройки и языковые вкладки;
  6. привязать экземпляр к метке страницы.

Шаблоны каждого типа изолированы в modules/<id>/templates.

Новые экземпляры используют нативное хранилище storage/modules/<id>/instances/<instance>.json. Поля редактора обнаруживаются по переменным %field% выбранного шаблона, общие поля — в секции @wrapper, поля элементов — в секции @item. Загруженные изображения размещаются в uploads/media/modules/<id>/<instance>.

Экземпляры, перенесённые из SantaFox, продолжают работать через изолированный legacy-адаптер. Их данные не используются при создании нового экземпляра и не являются частью нативной схемы.

Меню

Строит пункты автоматически по структуре сайта. Учитывает язык, SEO-режим, видимость страницы и активный пункт.

Настройки:

  • начальная страница;
  • глубина дерева;
  • файловый шаблон.

Типовые экземпляры: верхнее, мобильное и нижнее меню.

Дорога — хлебные крошки

Строит цепочку от корня до текущей страницы.

Настройки:

  • показывать главную страницу;
  • показывать текущую страницу;
  • выводить хлебные крошки на главной странице;
  • разделитель стандартного шаблона;
  • файловый шаблон.

Пользовательский шаблон может содержать разметку Schema.org BreadcrumbList. Каждый пункт должен быть отдельным ListItem с name и position; ссылка размечается свойством item. Только у последнего пункта Google разрешает не указывать item.

Блоки контента

Одиночный набор именованных полей: заголовок, текст, ссылка, изображение и другие поля конкретного блока. Значения редактируются по языковым вкладкам.

Имена переменных берутся из ключей полей. Например, поле title подставляется как %title%.

Повторяющиеся блоки

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

Редактор разделяет данные на два уровня:

  • Общие поля блока — переменные секции @wrapper, например %zagolovok% и %team%;
  • Поля элемента — переменные секции @item, например %image% и %name%.

Форма показывает только переменные, присутствующие в выбранном файловом шаблоне. Если удалить %email% из @item, поле email исчезнет из редактора, но сохранённые данные не удалятся. После возвращения метки поле и его значения снова появятся.

Шаблон обычно имеет две секции:

<!-- @wrapper -->
<div class="items">%items%</div>

<!-- @item -->
<article>%title%</article>

Метка %items% в секции @wrapper обозначает готовый HTML всех активных элементов и должна присутствовать в оболочке. Каждый элемент сетки необходимо оборачивать в отдельный контейнер (article, div и т. п.). Иначе заголовок, текст и остальные части элемента станут самостоятельными дочерними узлами grid-контейнера и визуально разъедутся по разным ячейкам.

Число в поле «Порядок» определяет очередность вывода: сначала меньшие значения. Отключенный элемент остается доступным в админке, но на сайте не показывается. Отметка «Удалить» применяется окончательно после сохранения формы.

Слайдер

Содержит слайды с изображением, заголовком, описанием, кнопкой, ссылкой, порядком и статусом. Переводы одного слайда расположены во вкладках, поэтому форма остаётся компактной.

Поддерживаемые базовые переменные:

%image%  %image_large%  %image_small%  %link_big_image%  %title%  %description%  %text%

Поля импортированных слайдеров также доступны по исходным ключам через слой совместимости.

Галерея

Выводит изображения с мультиязычными заголовками и описаниями. Поддерживает собственный шаблон и секции элемента/обёртки.

Социальные кнопки

Новый экземпляр хранится в нативном JSON-хранилище и редактируется в Модули сайта → Социальные кнопки. Для каждой кнопки задаются название, URL, CSS-класс иконки или изображение из медиатеки, порядок, активность, открытие в новом окне и nofollow. При открытии в новом окне CMS автоматически добавляет безопасные значения noopener noreferrer.

Названия социальных сетей обычно одинаковы для всех языков. Доступны только безопасные адреса http://, https:// и внутренние ссылки. Подпись контейнера автоматически выводится на языке текущей страницы для UA, RU и EN.

Переменные шаблона:

%items% %aria_label% %network% %url% %title% %media% %target% %rel%

Блог

Каждый экземпляр блога содержит собственный набор публикаций. Для записи задаются ЧПУ, дата публикации, активность, общее изображение и мультиязычные поля: заголовок, анонс, полный HTML-текст, автор и подписи ссылок. Запись с будущей датой появится автоматически в назначенное время; версия без заголовка на текущем языке не публикуется.

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

@wrapper @item @detail @empty
@item_image @detail_image
@pagination @page @page_current

Основные переменные: %items%, %pagination%, %url%, %title%, %summary%, %content%, %image%, %image_large%, %image_small%, %image_block%, %author%, %date%, %published_at%, %read_more%, %back_label% и %back_url%. Изображение одно для всех языков; текстовые поля заполняются на языковых вкладках.

Для галереи, блога и слайдера CMS хранит исходный файл и автоматически создаёт два пропорциональных варианта. Ширина задаётся в настройках экземпляра модуля: %image_large% предназначена для полноразмерного просмотра, %image_small% — для карточек и списков. Старая метка %image% сохранена для совместимости с ранее созданными шаблонами.

Обратная связь

Единый модуль «Обратная связь» создаёт мультиязычные формы и может одновременно отправлять заявки по Email и в Telegram. Каждый канал отдельно включается и настраивается в экземпляре формы. Если включено «Сохранять заявки в CMS», форму можно использовать без внешних каналов: обращения будут записываться только в приватный журнал сайта. Старые пакеты feedback_email и feedback_telegram сохранены только для совместимости существующих сайтов; для новых форм используйте модуль feedback.

Один экземпляр соответствует одной форме. Для каждого языка задаются заголовок, подписи, подсказки, варианты списков, текст кнопки и сообщения. После успешной отправки форма показывает модальное окно либо перенаправляет посетителя на выбранную страницу структуры. Публичный обработчик использует CSRF-токен, honeypot, ограничение частоты и серверную проверку значений. Страницы, содержащие форму напрямую или внутри модального окна, не помещаются в HTML-кеш: одноразовый токен, проверочный вопрос и сообщение после отправки всегда формируются в текущей сессии посетителя. Если один экземпляр формы выведен на странице несколько раз, результат показывается один раз и не теряется при рендеринге вложенного экземпляра. Заявки сохраняются в storage/modules/feedback/submissions/<экземпляр>.jsonl, если включён соответствующий переключатель. Стандартный шаблон имеет собственное адаптивное оформление; дизайн сайта может переопределить акцент через CSS-переменную --primo-feedback-accent.

Специальные коды

Модуль добавляет разрешённые администратором аналитические скрипты, пиксели, meta-теги и другие вставки в head, начало или конец body. Используйте его только для доверенного кода и проверяйте публичные страницы после изменения.

Создание нового шаблона модуля

В редакторе экземпляра нажмите «Новый шаблон». CMS создаст файл только в каталоге текущего модуля. После сохранения выберите его в экземпляре и проверьте все языки.

Не переносите шаблон вручную между разными типами модулей без адаптации секций и переменных.