Категории форума

Введение в экстраполя Cotonti (Кратко для понимания обсуждения)

Экстраполя (Extrafields, дополнительные поля) — это механизм Cotonti, позволяющий администратору добавлять свои собственные поля к существующим сущностям: страницам, пользователям, категориям и другим.


webitproff
webitproff • 24.04.2026 05:51 #1

Содержание


Введение в экстраполя Cotonti

Экстраполя (Extrafields, дополнительные поля) — это механизм Cotonti, позволяющий администратору добавлять свои собственные поля к существующим сущностям: страницам, пользователям, категориям и другим. Все настройки выполняются через удобный веб-интерфейс в административной панели, без необходимости писать код или править файлы на сервере.

Например, если вам нужно указывать для каждой страницы произвольный подзаголовок, дату события, стоимость товара или прикреплять дополнительный PDF-файл — всё это можно сделать, создав нужное экстраполе за несколько минут.

Все существующие в системе экстраполя можно посмотреть по адресу:
https://cotonti.local/ru/admin/extrafields

Для конкретного модуля, например «Страницы», перейдите по ссылке:
https://cotonti.local/ru/admin/extrafields?n=cot_pages
(вместо cot_pages может быть любая другая таблица, зарегистрированная для работы с экстраполями).

Полный список типов экстраполей

Cotonti поддерживает следующие типы дополнительных полей:

Тип поляТип данных в БДНазначение
inputVARCHAR(255)Обычная текстовая строка
inputintINTЦелое число
currencyDOUBLE(13,2)Денежная сумма (два знака после запятой)
doubleDOUBLEЧисло с плавающей точкой
textareaTEXTМногострочный текст
selectVARCHAR(255)Выпадающий список (одиночный выбор)
checkboxTINYINTФлажок (0/1)
radioVARCHAR(255)Переключатели (один вариант из нескольких)
datetimeINTДата и время (хранится в виде timestamp)
countryCHAR(2)Страна (выбор из стандартного списка)
rangeINTЦелое число из заданного диапазона
checklistboxTEXTСписок с множественным выбором (значения через запятую)
fileVARCHAR(255)Загрузка произвольного файла

Инструкция по настройке каждого типа на примере cot_pages

Ниже для каждого типа поля описано, как заполнять форму создания/редактирования экстраполя в админке (на примере таблицы страниц cot_pages). Для всех типов обязательными являются поля:

  • Имя поля (field_name) — латинскими буквами и цифрами, без пробелов, например: event_start, product_price.
  • Описание (field_description) — краткое пояснение, которое будет видно в форме редактирования и может использоваться как заголовок в шаблонах.

Остальные поля формы зависят от выбранного типа.

input — Текстовое поле

Используется для ввода короткой текстовой информации: название, подпись, идентификатор и т.п.

  • HTML-код поля: можно оставить пустым, тогда будет использован стандартный HTML.
  • Параметры (field_params): можно указать регулярное выражение для проверки ввода (например, /^[0-9]+$/ для цифр). Если оставить пустым — проверка не выполняется.
  • Значения выбора (field_variants): не используется (будет заблокировано).
  • Значение по умолчанию: любой текст, который будет подставлен при создании новой записи.
  • Парсинг: HTML или Text — влияет на обработку значения при выводе.
  • Обязательное: включите, если поле обязательно для заполнения.

Пример: поле «Заголовок на форуме»

  • Имя: forum_link
  • Описание: Тема на форумі
  • HTML-код: <input class="form-control" type="text" name="{$name}" value="{$value}" maxlength="255" />
  • Значение по умолчанию: пусто

inputint — Целое число

Для ввода целых чисел. При сохранении значение приводится к типу integer.

  • HTML-код поля: можно оставить пустым.
  • Параметры (field_params): минимальное и максимальное значение через запятую, например: 1,100. Если оставить пустым — без ограничений.
  • Значения выбора: не используется.
  • Значение по умолчанию: число.
  • Обязательное: по необходимости.

Пример: поле «Количество мест»

  • Имя: seats
  • Описание: Количество мест
  • Параметры: 1,500
  • Значение по умолчанию: 1

currency — Денежная сумма

Число с двумя знаками после запятой. Подходит для цен, сумм, финансовых показателей.

  • Параметры: минимальное и максимальное значение через запятую, например: 0,999999.99.
  • Значение по умолчанию: число (можно с плавающей точкой).
  • Остальные параметры — аналогично input.

Пример: поле «Цена товара»

  • Имя: price
  • Описание: Цена товара
  • Параметры: 0,100000
  • Значение по умолчанию: 0.00

double — Число с плавающей точкой

Аналогично currency, но без фиксированных двух знаков после запятой. Подходит для любых нецелых чисел.

  • Параметры: минимальное и максимальное значение через запятую, например: 0,100.5.
  • Значение по умолчанию: число с плавающей точкой.

Пример: поле «Стоимость билета» (как в вашей базе — event_ticketprice)

  • Имя: event_ticketprice
  • Описание: стоимость билета
  • Параметры: пусто
  • Значение по умолчанию: пусто

textarea — Многострочный текст

Для ввода длинного текста с переносами строк. Обычно используется для описаний, комментариев, больших заметок.

  • HTML-код поля: стандартный <textarea>, можно добавить атрибуты rows и cols.
  • Параметры: не используется.
  • Значения выбора: не используется.
  • Значение по умолчанию: можно указать текст.

Пример: поле «Описание программы события» (event_description)

  • Имя: event_description
  • Описание: Описание программы события
  • HTML-код: <textarea class="form-control" name="{$name}" rows="{$rows}" cols="{$cols}" maxlength="255">{$value}</textarea>

select — Выпадающий список

Позволяет выбрать одно значение из заданного набора. Значения перечисляются через запятую в поле «Значения для select/radio».

  • Значения выбора (field_variants): значение1,значение2,значение3 (без пробелов вокруг запятых).
  • Параметры: не используется.
  • Значение по умолчанию: одно из значений списка.

Пример: поле «Сезон» (event_seson)

  • Имя: event_seson
  • Описание: Сезон
  • Значения выбора: unknown,winter,summer,autumn,spring
  • Значение по умолчанию: unknown
  • HTML-код (если нужен свой): <select class="form-select" name="{$name}">{$options}</select>

checkbox — Флажок

Простой переключатель «Да/Нет». Сохраняет значение 1 (включено) или 0 (выключено).

  • Параметры: не используется.
  • Значения выбора: не используется.
  • Значение по умолчанию: 1 (включено) или 0 (выключено).

Пример: поле «Активно»

  • Имя: is_active
  • Описание: Активно
  • Значение по умолчанию: 1

radio — Переключатели

Группа радиокнопок для выбора одного значения. Список значений задаётся аналогично select.

  • Значения выбора: через запятую, например: option1,option2,option3.
  • Значение по умолчанию: одно из вариантов.
  • Параметры: не используется.

Пример: поле «Тип материала»

  • Имя: content_type
  • Описание: Тип материала
  • Значения выбора: article,news,review
  • Значение по умолчанию: article

datetime — Дата и время

Позволяет выбрать дату и время с помощью селекторов. Значение хранится как timestamp (целое число).

  • Параметры (field_params): строка формата мин_год,макс_год,формат_даты. Если не указан формат даты, при выводе будет показан timestamp. В формате даты используются обозначения, принятые в PHP-функции date(), например: d.m.Y H:i (день.месяц.год часы:минуты). Важно: не используйте %d и подобные — они не поддерживаются в этом поле.
  • Значения выбора: не используется.
  • Значение по умолчанию: можно оставить пустым или задать относительную дату: +1 week (через неделю), -1 day (вчера) и т.д.

Реальный пример:

  • Имя: event_start
  • Описание: Начало события
  • Параметры: 2024,2030,d.m.Y H:i
  • Значение по умолчанию: пусто
  • HTML-код (как у вас): <div class="row g-2">...{$day}...{$month}...{$year}...{$hour}...{$minute}...</div>

При таком заполнении поле будет корректно отображать дату и время.

country — Страна

Выпадающий список стран. Значение — двухбуквенный код страны (например, AE, US).

  • Параметры: не используется.
  • Значения выбора: не используется (список стран фиксирован).
  • Значение по умолчанию: можно указать код страны, например: AE.

Пример: поле «Страна происхождения»

  • Имя: origin_country
  • Описание: Страна происхождения
  • Значение по умолчанию: AE

range — Диапазон целых чисел

Выпадающий список целых чисел в заданном диапазоне (например, от 1 до 10).

  • Параметры: минимальное и максимальное значение через запятую, например: 1,10.
  • Значения выбора: не используется.
  • Значение по умолчанию: число из диапазона.

Пример: поле «Оценка»

  • Имя: rating
  • Описание: Оценка
  • Параметры: 1,5
  • Значение по умолчанию: 1

checklistbox — Список с множественным выбором

Группа флажков, из которых можно выбрать несколько вариантов. Значения сохраняются в текстовом виде через запятую.

  • Значения выбора: список значений через запятую (как у select).
  • Параметры: можно указать разделитель, который будет использоваться при выводе (по умолчанию запятая с пробелом).
  • Значение по умолчанию: одно или несколько значений через запятую.

Пример: поле «Категории»

  • Имя: categories
  • Описание: Категории
  • Значения выбора: news,articles,events
  • Значение по умолчанию: news,articles

file — Загрузка файла

Позволяет загрузить произвольный файл. В значении сохраняется имя файла.

  • Значения выбора: разрешённые расширения через запятую (например: jpg,jpeg,png,gif,pdf). Если оставить пустым — разрешены любые.
  • Параметры: директория для загрузки файлов (относительно корня сайта). По умолчанию используется datas/photos.
  • Значение по умолчанию: обычно пустое.

Пример: поле «Презентация»

  • Имя: presentation
  • Описание: Файл презентации
  • Значения выбора: pdf,ppt,pptx
  • Параметры: datas/presentations

Переменные в HTML-коде поля

При создании собственного HTML-кода для поля можно использовать специальные переменные:

  • {$name} — атрибут name для поля ввода.
  • {$value} — текущее значение поля.
  • {$attrs} — дополнительные атрибуты (например, при использовании стандартного input_text).
  • {$day}, {$month}, {$year}, {$hour}, {$minute} — для типа datetime.
  • {$rows}, {$cols} — для textarea.
  • {$options} — для select, radio и подобных.
  • {$error} — сообщение об ошибке валидации.
🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.