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

Модулі FoxCoreCMS

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

Перевірено для версії: FoxCoreCMS 1.1.1Оновлено: 26.09.2026

Послідовність роботи з екземпляром

Установіть модуль, створіть або відкрийте екземпляр, дайте йому зрозумілу назву, виберіть файловий шаблон, заповніть налаштування і мовні вкладки, а потім прив'яжіть екземпляр до мітки сторінки. Наприклад, один модуль «Меню» може забезпечувати верхню, мобільну й нижню навігацію через різні екземпляри. Поля редактора нативного екземпляра система знаходить за змінними %field% вибраного шаблону: спільні поля — у @wrapper, поля повторюваних елементів — у @item.

Меню та крихти

Меню будується автоматично за структурою сайту з урахуванням мови, SEO-режиму, видимості та активного пункту. Налаштуйте початкову сторінку, глибину дерева й файловий шаблон. Для верхнього, мобільного і нижнього меню використовуйте окремі екземпляри, якщо їхня розмітка чи обсяг різняться.

Модуль «Дорога» формує ланцюжок від кореня до поточної сторінки. Налаштовуються показ головної й поточної сторінок, показ ланцюжка на головній, роздільник і шаблон. У Schema.org BreadcrumbList кожен пункт має бути окремим ListItem із name та position; посилання має itemprop=item. Google дозволяє не вказувати item лише для останнього пункту.

Блоки контенту й повторювані елементи

Одиночний блок містить іменовані поля: заголовок, текст, посилання, зображення чи інші поля вибраного шаблону. Поле title підставляється як %title%; мовні значення редагуються на окремих вкладках. Повторювані блоки підходять для послуг, команди й переваг. Елементи можна додавати, впорядковувати, вимикати та видаляти; вони мають мовні поля й зображення.

У секції @wrapper поставте %items% — готовий HTML усіх активних елементів. Секція @item описує одну картку, і кожну картку слід обгорнути власним article або div, інакше її частини розкладуться по різних клітинках CSS Grid. Менші значення «Порядку» показуються першими. Вимкнений елемент лишається в панелі, але не виводиться на сайт. Прапорець «Видалити» застосовується після збереження. Якщо прибрати %email% із @item, поле зникне з редактора, але збережене значення залишиться й повернеться разом зі змінною.

Слайдер, галерея та зображення

Слайд містить зображення, заголовок, опис, кнопку, посилання, порядок і статус; переклади одного слайда розміщені в мовних вкладках. Базові змінні: %image%, %image_large%, %image_small%, %link_big_image%, %title%, %description% і %text%. Для імпортованих слайдерів доступні й початкові ключі через шар сумісності. Галерея має багатомовні заголовки та описи й власні секції обгортки та елементів.

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

Соціальні кнопки

Редагуйте екземпляр у «Модулі сайту → Соціальні кнопки». Для кнопки можна задати назву, URL, CSS-клас іконки чи зображення медіатеки, порядок, активність, нове вікно та nofollow. Дозволені внутрішні посилання й зовнішні URL http:// або https://. Нове вікно автоматично додає noopener noreferrer. Назви мереж зазвичай однакові всіма мовами, але підпис контейнера автоматично локалізується для UK, 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%.

Форми зворотного зв'язку та коди

Для нових форм використовуйте єдиний модуль feedback. Один екземпляр — одна форма. Для кожної мови задаються заголовок, підписи, підказки, варіанти списків, текст кнопки й повідомлення. Email і Telegram вмикаються окремо; якщо ввімкнути «Зберігати заявки в CMS», можна обійтися без зовнішніх каналів — звернення потраплять у приватний журнал storage/modules/feedback/submissions/<екземпляр>.jsonl. Після успіху форма показує модальне повідомлення або перенаправляє на вибрану сторінку.

Публічний обробник використовує CSRF, honeypot, обмеження частоти й серверну валідацію. Сторінки з формою, навіть вкладеною в модальне вікно, не потрапляють до HTML-кешу, бо токен і перевірочне запитання мають належати поточній сесії. Старі feedback_email і feedback_telegram лишилися лише для сумісності. Акцент стандартного шаблону можна перевизначити CSS-змінною --primo-feedback-accent.

«Спеціальні коди» додають довірені аналітичні скрипти, пікселі, meta-теги й інші вставки в head, початок або кінець body. Після зміни перевірте публічні сторінки. Новий файловий шаблон створюйте з редактора екземпляра: він залишиться в каталозі поточного модуля, після чого його треба вибрати й перевірити всі мови.

Модуль — тип функціональності, екземпляр — його конкретне налаштування. Один модуль «Меню» може мати окремі екземпляри для шапки, мобільної навігації та підвалу. Зазвичай потрібно встановити модуль, створити екземпляр, вибрати файловий шаблон, заповнити налаштування й мовні поля та прив'язати екземпляр до мітки сторінки.

Нові екземпляри зберігаються у storage/modules/<id>/instances/<instance>.json, а завантажені зображення — в uploads/media/modules/<id>/<instance>. Шаблони ізольовано у modules/<id>/templates/. Дані старих імпортованих екземплярів працюють через окремий адаптер і не є схемою для нових.

Навігація та контент

Меню будується зі структури сайту з урахуванням мови, видимості сторінок, глибини дерева й активного пункту. Модуль «Дорога» формує навігаційний ланцюжок; у власному шаблоні можна розмітити BreadcrumbList, де кожен пункт є окремим ListItem.

«Блоки контенту» — один набір іменованих полів. «Повторювані блоки» — елементи з порядком, активністю, зображеннями та перекладами. Спільні поля знаходяться у секції @wrapper, поля елемента — у @item. %items% в обгортці вставляє HTML активних елементів. Поле, змінну якого прибрали з шаблону, зникає з редактора, але збережене значення не видаляється.

Медіа та публікації

Слайдер містить слайди з зображенням, текстом, кнопками, порядком і статусом. Галерея підтримує мультимовні підписи. Блог має власні записи в кожному екземплярі: ЧПУ, дату, спільне зображення та мовні заголовок, анонс і повний текст. Запис із майбутньою датою з'явиться у свій час; без заголовка поточною мовою він не публікується. Для блогу доступні секції @wrapper, @item, @detail, @empty і секції пагінації.

Для блогу, галереї та слайдера система зберігає оригінал і створює пропорційні великі та малі варіанти. Змінні %image_large% і %image_small% використовуйте відповідно для перегляду та карток; %image% лишається для сумісності.

Зв'язок і сторонні вставки

«Соціальні кнопки» зберігають назву, URL, іконку або зображення, порядок, активність, відкриття в новому вікні та nofollow. Зовнішні URL мають бути http або https; для нового вікна CMS додає noopener noreferrer.

Нові форми створюйте модулем feedback. Він підтримує Email, Telegram або тільки приватний журнал заявок, мовні поля, CSRF, honeypot, обмеження частоти та серверну перевірку. Сторінки з формою не кешуються як статичний HTML. Модуль спеціальних кодів додає лише довірені скрипти, пікселі чи meta-теги у визначені позиції сторінки.

Новий шаблон створюйте з редактора екземпляра: файл залишиться в каталозі його модуля. Після зміни перевірте всі активні мови.