Экстраполя в Cotonti. Руководство для начинающих.

Эта статья — для людей, которые никогда раньше не работали с системой управления сайтом Cotonti и хотят разобраться в экстраполях. Пособие для новичков.

0 Опубликована Опубликовано в: Cotonti Siena CMF > Cotonti - чтиво. Документация.

План курса по введению в экстраполя в котонти на примере модуля Page (страницы и статьи)

  1. Введение
  2. Часть 1. Что такое экстраполя — суть и концепция простыми словами
  3. Часть 2. Куда встроены экстраполя в Cotonti и как они работают
  4. Часть 3. Все тринадцать типов полей: подробный разбор
  5. Часть 4. Подготовительные шаги перед созданием экстраполя
  6. Часть 5. Пошаговое создание экстраполя для модуля Page
  7. Часть 6. Как вывести экстраполя в шаблонах
  8. Часть 7. Практические примеры для разных типов сайтов
  9. Часть 8. Частые ошибки и способы их решения
  10. Часть 9. Продвинутые приёмы
  11. Часть 10. Ответы на вопросы начинающих
  12. Заключение

Введение

Эта статья — для людей, которые никогда раньше не работали с системой управления сайтом Cotonti и хотят разобраться в экстраполях. Мы не будем использовать сложные термины, не будем заставлять вас писать код, и не будем требовать знаний языков программирования. Все объяснения — простыми словами, с аналогиями, примерами и таблицами.

Материал построен так, что читать его можно последовательно, глава за главой. Если вам нужен ответ на конкретный вопрос — открой содержание и перейди к нужному разделу.

После изучения этой статьи вы сможете:

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

Часть 1. Что такое экстраполя — суть и концепция простыми словами

Глава 1.1. Житейская аналогия: шкаф и полка

Чтобы понять суть экстраполей, представим самый обычный шкаф для одежды. В шкафу есть несколько полок: для рубашек, для брюк, для обуви. Эти полки встроены в конструкцию с самого начала — они есть у всех, кто купил такой шкаф. Менять их никто не собирается.

Но однажды вы привозите из отпуска коллекцию шляп. Для них в шкафу места нет. Что вы делаете? Прибиваете дополнительную полку. Эта полка не была предусмотрена производителем — вы придумали её сами под свою конкретную задачу.

Вот эта дополнительная полка и есть экстраполя в мире Cotonti. Это поле, которого не было в стандартной структуре данных, но которое вы создали сами, потому что оно вам нужно.

Другой пример: анкета при приёме на работу. В стандартной анкете есть графы «Фамилия», «Имя», «Дата рождения», «Образование». Но вашему отделу кадров нужно дополнительно знать, есть ли у кандидата водительские права. Вы дописываете в анкету дополнительную строку. Это тоже экстраполя — дополнительное поле, придуманное вами.

Глава 1.2. Что такое поле в базе данных

Вся информация на сайте хранится в базе данных. База данных — это набор таблиц. Каждая таблица похожа на лист Excel: есть строки (записи) и столбцы (поля).

Например, таблица страниц (cot_pages) содержит в себе все страницы вашего сайта. Каждая строка — это одна страница. Каждый столбец — это характеристика страницы.

Стандартные столбцы таблицы страниц:

СтолбецЧто содержит
page_idУникальный номер страницы (автоинкремент)
page_aliasАльтернативный адрес страницы (ЧПУ)
page_stateСостояние публикации: 0 — черновик, 1 — опубликовано, 2 — на модерации
page_catКод категории, к которой относится страница
page_titleЗаголовок страницы
page_descКраткое описание
page_keywordsКлючевые слова для SEO
page_metatitleМета-тег title
page_metadescМета-тег description
page_textОсновной текст страницы
page_parserКакой парсер применять к тексту
page_authorАвтор страницы
page_owneridID владельца страницы
page_dateДата создания (timestamp)
page_beginДата начала публикации
page_expireДата окончания публикации
page_updatedДата последнего обновления
page_fileФлаг наличия прикреплённого файла
page_urlАдрес страницы
page_sizeРазмер страницы
page_countСчётчик просмотров
page_filecountКоличество прикреплённых файлов

Как видите, здесь есть всё, что нужно для типичной страницы: заголовок, описание, текст, автор, даты. Но чего-то может не хватать. Например, если вы продаёте товары через модуль «Страницы», то где хранить цену? Где хранить артикул? Где хранить производителя? Стандартных полей для этого нет. И вот тут на помощь приходят экстраполя.

Глава 1.3. Как экстраполя появляются в базе данных

Когда вы создаёте экстраполе через админку Cotonti, происходит следующее:

  1. В таблицу cot_pages добавляется новый столбец с именем, которое вы указали.
  2. В служебную таблицу cot_extra_fields добавляется запись с описанием этого поля (его тип, настройки, принадлежность к таблице).
  3. Cotonti начинает автоматически отображать это поле в форме редактирования страницы.
  4. Cotonti автоматически создаёт теги для вывода значения этого поля в шаблоне.

Таким образом, экстраполе становится полноправной частью системы. Оно ведёт себя так же, как встроенные поля: его можно заполнить при создании страницы, его можно вывести в шаблоне, его можно изменять при редактировании.

Схематично это выглядит так:

Админ создаёт поле
        ↓
Запись в cot_extra_fields
        ↓
ALTER TABLE cot_pages (добавление столбца)
        ↓
Поле в форме редактирования
        ↓
Тег в шаблоне (PAGE_ИМЯ_ПОЛЯ)
        ↓
Значение на сайте

Глава 1.4. К каким сущностям можно добавлять экстраполя

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

СущностьТаблицаЧто хранитПримеры использования
Страницыcot_pagesСтатьи, новости, товарыЦена, артикул, автор, источник
Пользователиcot_usersПрофилиSkype, Telegram, город, должность
Категории структурыcot_structureРазделы сайтаИконка, цвет, SEO-описание
Товары Marketcot_marketТовары магазинаХарактеристики, гарантия
Форум-топикиcot_forum_topicsТемы форумаВажность, статус
Форум-постыcot_forum_postsСообщения форумаПрикреплённый файл
Комментарииcot_comКомментарииОценка, статус

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

Глава 1.5. Зачем нужны экстраполя: реальные примеры

Чтобы лучше понять область применения экстраполей, рассмотрим несколько сценариев.

Сценарий 1. Интернет-магазин на модуле Page. Вы продаёте электронику. Для каждой страницы-товара нужно указывать: цену, артикул, производителя, гарантийный срок, наличие на складе, ссылку на инструкцию. Стандартных полей Cotonti для этого не хватает. Вы создаёте шесть экстраполей.

Сценарий 2. Блог о путешествиях. Вы пишете статьи о разных странах. Для каждой статьи хочется указать: страну, город, время года, бюджет поездки, длительность. Создаёте пять экстраполей.

Сценарий 3. Каталог недвижимости. Вы публикуете объявления о квартирах. Нужно указывать: площадь, количество комнат, этаж, тип дома, наличие балкона, стоимость. Создаёте шесть экстраполей.

Сценарий 4. Новостной портал. Вы публикуете новости. Хотите указывать: источник, автора, город события, время события. Создаёте четыре экстраполя.

Сценарий 5. Портфолио фотографа. У каждой работы есть технические параметры: камера, объектив, ISO, выдержка, диафрагма. Создаёте семь экстраполей.

Сценарий 6. Кулинарный сайт. У каждого рецепта есть: время приготовления, количество порций, калорийность, сложность. Создаёте четыре экстраполя.

Во всех этих случаях экстраполя — единственный способ добавить нужную информацию без переписывания ядра системы.

Глава 1.6. Что было бы без экстраполей

Если бы экстраполей не существовало, для каждой такой задачи пришлось бы:

  1. Править структуру базы данных сайта вручную — то есть лезть в MySQL через phpMyAdmin, добавлять колонки, рисковать потерей данных.
  2. Писать код, который бы читал и сохранял эти новые колонки.
  3. Править шаблоны, чтобы вывести новые данные на странице.
  4. При каждом обновлении Cotonti заново переделывать все правки.

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

Глава 1.7. Ограничения экстраполей

Чтобы картина была полной, скажем и о минусах:

  • Тип поля нельзя изменить после создания. Создали поле как число — навсегда число. Если ошиблись, придётся удалить поле и создать заново, потеряв данные.
  • Удаление поля удаляет данные. Если удалить экстраполе, все значения, которые в нём были сохранены, стираются безвозвратно.
  • Экстраполя — не замена связям между таблицами. Если нужна связь между двумя сущностями (например, «товар принадлежит продавцу»), это делается другим механизмом.
  • Интерфейс ограничен типами полей. Всего доступно около тринадцати типов. Если нужен очень сложный ввод (карта, редактор кода, множественные файлы со сортировкой), потребуется отдельный плагин.
  • Не получится сделать выпадающий список с зависимостями. Например, «страна → город» через стандартные экстраполя не сделать.

Все эти ограничения не критичны, если понимать их заранее.


Часть 2. Куда встроены экстраполя в Cotonti и как они работают

Глава 2.1. Общая схема хранения данных

Cotonti хранит данные в базе MySQL. Каждая сущность имеет свою таблицу:

СущностьИмя таблицы (с префиксом сайта)
Страницыcot_pages
Пользователиcot_users
Категорииcot_structure
Экстраполя (описания)cot_extra_fields

Когда вы создаёте экстраполе для страниц, происходят две вещи:

  1. В таблице cot_extra_fields появляется запись с параметрами вашего поля.
  2. В таблице cot_pages автоматически создаётся новая колонка с именем, которое вы указали.

Все это происходит «под капотом», пользователь видит только результат.

Глава 2.2. Таблица cot_extra_fields

Таблица cot_extra_fields содержит метаданные обо всех экстраполях. Условно её можно представить так:

ПолеЧто хранитПример
field_locationК какой таблице привязаноcot_pages
field_nameИмя поляproduct_price
field_typeТип поляcurrency
field_htmlHTML-шаблон для отображения<input …>
field_variantsВарианты значенийЧерновик, Опубликовано
field_paramsДополнительные параметры0,1000
field_defaultЗначение по умолчанию0
field_requiredОбязательное ли0 или 1
field_enabledВключено ли0 или 1
field_parseПарсить HTML или нетHTML или Text
field_descriptionОписание поля«Цена товара»

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

Глава 2.3. Что происходит при сохранении страницы

Когда вы открываете страницу в админке и заполняете экстраполе, происходит следующее:

  1. Cotonti получает данные из формы.
  2. Проверяет их по правилам, указанным в метаданных поля (например, число ли это, попадает ли в диапазон).
  3. Сохраняет значения в соответствующие колонки таблицы cot_pages.

При каждом обновлении страницы значения экстраполей обновляются так же, как и стандартные поля.

Глава 2.4. Как формируются теги для шаблонов

Из имени поля формируется тег для шаблона по простому правилу:

Имя поля в админкеТег для шаблона
product_price{PAGE_PRODUCT_PRICE}
author_name{PAGE_AUTHOR_NAME}
release_year{PAGE_RELEASE_YEAR}

Правило: имя поля переводится в верхний регистр, к нему спереди добавляется PAGE_, и всё оборачивается в фигурные скобки.

Исключение: если поле создано для другого модуля, префикс будет другим. Например, USERS_ для пользователей, MARKET_ для товаров.

Глава 2.5. Как Cotonti понимает, где выводить поле

Cotonti не знает, куда именно вы хотите вставить поле. Он не «угадывает» место. Поэтому вся ответственность за расположение лежит на вас: вы должны открыть файл шаблона в текстовом редакторе, найти нужное место и вставить туда тег.

Это одновременно и гибко (вы можете вывести поле в любом месте страницы), и требовательно (нужно понимать, как устроены шаблоны).

Глава 2.6. Схема: путь данных от формы до страницы

Форма редактирования страницы
        ↓
    Ядро Cotonti
        ↓
    Валидация данных
        ↓
    Таблица cot_pages (колонки экстраполей)
        ↓
    Шаблон page.tpl
        ↓
    Готовый HTML на сайте

Эта схема помогает понять, что при каждом изменении данных в форме вся цепочка срабатывает заново.


Часть 3. Все тринадцать типов полей: подробный разбор

Cotonti поддерживает тринадцать типов полей. Рассмотрим каждый.

Глава 3.1. Input — однострочный текст

Что это. Стандартное текстовое поле, куда можно ввести до 255 символов.

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

Пример. Поле «Автор статьи» — вводится имя человека, который написал текст.

Настройки. Нет особых параметров, кроме имени и описания.

Ограничения. Только текст, только 255 символов. Если нужен многострочный текст, используйте textarea.

Как выглядит в форме. Простая строка ввода.

Как выглядит на сайте. Ровно то, что ввели, без изменений.

Глава 3.2. InputInt — целое число

Что это. Поле, куда можно вводить только целые числа (без точек и запятых).

Для чего использовать. Количество чего-либо, год, рейтинг, возраст.

Пример. Поле «Количество на складе» — можно ввести «150».

Настройки. Можно задать минимальное и максимальное значение.

Ограничения. Только целые числа. Для дробных используйте double или currency.

Как выглядит в форме. Строка ввода с цифровой клавиатурой на мобильных.

Как выглядит на сайте. Число без изменений.

Глава 3.3. Double — число с плавающей точкой

Что это. Поле для чисел, в которых есть дробная часть.

Для чего использовать. Вес, объём, расстояние, коэффициенты.

Пример. Поле «Вес товара, кг» — можно ввести «2.45».

Настройки. Можно указать количество знаков после запятой.

Ограничения. Не подходит для денег — для них есть отдельный тип currency.

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

Как выглядит на сайте. Число без изменений.

Глава 3.4. Currency — денежная сумма

Что это. Поле специально для денег. Отличается от double тем, что к значению автоматически применяется форматирование.

Для чего использовать. Цены, стоимости, бюджеты.

Пример. Поле «Цена» — вводится «1500», а на сайте отображается как «1500.00».

Настройки. Количество знаков после запятой (обычно 2).

Как выглядит в форме. Обычная строка ввода.

Как выглядит на сайте. Число с двумя знаками после запятой.

Глава 3.5. Textarea — многострочный текст

Что это. Большое поле для ввода текста, в которое можно уместить несколько абзацев.

Для чего использовать. Краткие описания, характеристики, комментарии, заметки.

Пример. Поле «Комплектация» — список того, что входит в товар.

Настройки. Можно указать количество строк и столбцов для отображения.

Ограничения. Это не визуальный редактор, а простое текстовое поле. Для форматированного текста нужно использовать стандартные поля Cotonti с включённым редактором.

Как выглядит в форме. Большой блок для ввода текста.

Как выглядит на сайте. Текст с переносами строк (если разрешён HTML).

Глава 3.6. Select — выпадающий список

Что это. Раскрывающийся список, из которого можно выбрать только один вариант.

Для чего использовать. Статусы, категории, состояния, типы.

Пример. Поле «Состояние товара» — варианты: «Новый», «Б/У», «Восстановленный».

Настройки. Список вариантов, каждый вариант — с новой строки в специальном поле.

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

Как выглядит в форме. Выпадающий список с одним активным вариантом.

Как выглядит на сайте. Текст выбранного варианта.

Глава 3.7. Checkbox — флажок

Что это. Один флажок, который можно включить или выключить.

Для чего использовать. Да/нет, yes/no, вкл/выкл.

Пример. Поле «Рекомендуем» — если флажок стоит, товар попадает в блок рекомендуемых.

Настройки. Нет.

Ограничения. Только два состояния. Если нужно несколько вариантов, используйте radio.

Как выглядит в форме. Один квадратик, который можно отметить или снять.

Как выглядит на сайте. 0 или 1. Обычно используется в условиях (IF).

Глава 3.8. Radio — группа радиокнопок

Что это. Несколько кнопок-переключателей, из которых можно выбрать один вариант.

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

Пример. Поле «Тип доставки» — «Курьер», «Почта», «Самовывоз».

Настройки. Список вариантов.

Ограничения. Не подходит для длинных списков — тогда лучше select.

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

Как выглядит на сайте. Текст выбранного варианта.

Глава 3.9. Datetime — дата и время

Что это. Поле для ввода даты и времени.

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

Пример. Поле «Дата начала акции» — выбирается через календарь.

Настройки. Формат отображения даты, диапазон лет.

Ограничения. Всегда включает и дату, и время. Если нужно только время, задавайте дату условно.

Как выглядит в форме. Несколько выпадающих списков (день, месяц, год, час, минута).

Как выглядит на сайте. Дата в заданном формате (например, 12.10.2026).

Глава 3.10. Country — страна

Что это. Выпадающий список стран, стандартизированный системой.

Для чего использовать. Страна производства, страна доставки, гражданство.

Пример. Поле «Страна-производитель».

Настройки. Нет — список стран уже встроен.

Как выглядит в форме. Выпадающий список с названиями стран.

Как выглядит на сайте. Двухбуквенный код страны.

Глава 3.11. Range — целое число из диапазона

Что это. Поле, куда можно ввести целое число в заданных рамках.

Для чего использовать. Рейтинги, оценки, уровни.

Пример. Поле «Оценка товара» — от 1 до 5.

Настройки. Минимум и максимум.

Как выглядит в форме. Выпадающий список с числами в диапазоне.

Как выглядит на сайте. Число.

Глава 3.12. Checklistbox — список с множественным выбором

Что это. Список, в котором можно отметить сразу несколько вариантов.

Для чего использовать. Теги, категории, группы характеристик.

Пример. Поле «Теги» — можно отметить «Новинка», «Хит продаж», «Скидка».

Настройки. Список вариантов.

Ограничения. В шаблонах сложнее вывести значения — нужно использовать специальные циклы.

Как выглядит в форме. Несколько чекбоксов.

Как выглядит на сайте. Значения через запятую.

Глава 3.13. File — загрузка файла

Что это. Поле для загрузки файла с локального компьютера.

Для чего использовать. Прикрепление PDF-инструкций, документов, изображений.

Пример. Поле «Инструкция» — прикрепляется PDF-файл.

Настройки. Разрешённые форматы, папка для загрузки.

Ограничения. Для изображений обычно используют стандартные поля Cotonti, а file — для документов.

Как выглядит в форме. Кнопка выбора файла + флажок удаления.

Как выглядит на сайте. Ссылка на файл.


Часть 4. Подготовительные шаги перед созданием экстраполя

Глава 4.1. Что нужно знать перед началом

Прежде чем создавать экстраполя, убедитесь, что у вас есть:

  1. Доступ к админ-панели Cotonti. Логин и пароль администратора.
  2. Права администратора. Не все пользователи могут создавать экстраполя — нужны права уровня администратора.
  3. Резервная копия базы данных. Обязательно сделайте бэкап перед созданием новых полей.
  4. Понимание структуры вашего сайта. Подумайте, какие поля вам действительно нужны.

Глава 4.2. Создание резервной копии

Резервная копия — это святое. Никогда не пренебрегайте ей. Создать бэкап базы данных можно:

  1. Через панель управления хостингом (обычно есть раздел «Резервные копии»).
  2. Через phpMyAdmin (экспорт базы).
  3. Через плагины Cotonti (например, dbbackup).

Резервную копию желательно хранить в трёх местах: на сервере, на локальном компьютере и в облачном хранилище.

Глава 4.3. Планирование экстраполей

Прежде чем создавать экстраполя, составьте список полей, которые вам нужны. Для каждого поля определите:

  • Имя поля (латиницей, без пробелов)
  • Тип поля
  • Описание (что увидит пользователь в форме)
  • Обязательность (обязательно ли заполнять)
  • Где будет использоваться (в каком шаблоне выводиться)

Пример таблицы планирования:

ИмяТипОписаниеГде используется
priceCurrencyЦена товараКарточка товара, список товаров
skuInputАртикулКарточка товара
vendorInputПроизводительКарточка товара
warrantyInputIntГарантия (мес)Карточка товара
stockCheckboxЕсть в наличииКарточка товара, фильтр
manual_urlInputСсылка на инструкциюКарточка товара

С такой таблицей процесс создания полей пойдёт быстрее и без ошибок.

Глава 4.4. Рекомендации по именам полей

Имя поля — это то, что будет использоваться в базе данных и в шаблонах. Оно должно быть:

  • Латинскими буквами.
  • Без пробелов.
  • Без дефисов.
  • Без точек.
  • С подчёркиваниями для разделения слов.
  • Осмысленным.

Примеры хороших имён:

  • product_price — цена товара
  • author_name — имя автора
  • event_date — дата события
  • is_featured — рекомендуемое

Примеры плохих имён:

  • field1 — непонятно, что хранится
  • temp — не отражает суть
  • abc — вообще ни о чём

Часть 5. Пошаговое создание экстраполя для модуля Page

Шаг 1. Вход в административную панель

  1. Откройте ваш сайт в браузере.
  2. Добавьте к адресу /admin или /ru/admin в зависимости от языковой версии сайта.
  3. Введите логин и пароль администратора.
  4. Нажмите кнопку «Войти».

Шаг 2. Переход в раздел «Экстраполя»

  1. В левом меню найдите раздел «Управление сайтом».
  2. Раскройте его.
  3. Выберите пункт «Экстраполя».
  4. Прямая ссылка обычно выглядит как https://ваш-сайт.ru/admin/extrafields.

Вы попадёте на страницу со списком всех таблиц, к которым можно добавлять дополнительные поля.

Шаг 3. Выбор таблицы страниц

На странице откроется список таблиц. Найдите в списке таблицу cot_pages (в вашей установке префикс может быть другим, например x92374_pages). Это таблица модуля «Страницы» (Page).

Нажмите на название таблицы. Вы попадёте на страницу управления экстраполями именно этой таблицы.

Шаг 4. Изучение существующих полей

На открывшейся странице вы увидите таблицу с уже существующими дополнительными полями. В стандартной установке Cotonti их может не быть — таблица будет пустой.

Также вы увидите форму для добавления нового поля. Обычно она находится внизу страницы.

Шаг 5. Заполнение формы добавления

Форма добавления состоит из нескольких полей.

ПолеЧто ввести
Включено (Enabled)Оставьте галочку стоящей
Имя поля (Name)Уникальное латиницей, например product_price
Описание (Description)Понятное название для редактора, например «Цена товара»
HTML-код поляОставьте пустым — Cotonti сгенерирует сам
Тип поляВыберите из списка, например currency
Значения выбораЗаполните только для select/radio/checklistbox
ПараметрыЗаполните только для числовых типов и datetime
Значение по умолчаниюОпционально
ОбязательноеСтавьте флажок, только если поле критично

Шаг 6. Выбор типа поля

Справа или ниже от блока с именем и описанием находится выпадающий список «Тип поля» (Type). По умолчанию выбран input. Нажмите на него и выберите нужный тип.

После выбора типа форма может перестроиться: некоторые дополнительные поля появятся, некоторые — исчезнут.

Шаг 7. Настройка дополнительных параметров

Для разных типов полей нужно заполнить разные параметры.

Для Input — дополнительных параметров нет.

Для InputInt:

ПараметрОписание
МинимумМинимальное значение
МаксимумМаксимальное значение

Для Currency:

ПараметрОписание
Знаков после запятойОбычно 2

Для Double:

ПараметрОписание
Знаков после запятойОбычно 2-4

Для Textarea:

ПараметрОписание
ШиринаВ символах
ВысотаВ строках

Для Select:

ПараметрОписание
Значения выбораКаждое значение с новой строки

Для Radio и Checklistbox:

ПараметрОписание
Значения выбораКаждое значение с новой строки

Для Datetime:

ПараметрОписание
Диапазон летГод от и до
ФорматНапример, d.m.Y H:i

Для Range:

ПараметрОписание
МинимумМинимальное значение
МаксимумМаксимальное значение

Для File:

ПараметрОписание
Папка загрузкиКуда сохранять файлы
Разрешённые форматыНапример, pdf,doc,zip

Шаг 8. Сохранение поля

  1. Проверьте все заполненные поля.
  2. Нажмите кнопку «Сохранить» или «Добавить».
  3. Если всё заполнено верно, поле появится в таблице существующих экстраполей.

Шаг 9. Проверка в форме редактирования страницы

  1. Перейдите в раздел «Страницы».
  2. Откройте любую страницу на редактирование.
  3. Прокрутите форму вниз — вы должны увидеть новое поле.

Шаг 10. Заполнение значения

Введите в новое поле тестовое значение и сохраните страницу. Пока ничего не изменилось на сайте, потому что шаблон ещё не знает про новое поле. Это следующий шаг.

Шаг 11. Создание остальных полей

Повторите шаги 5–10 для всех запланированных полей.


Часть 6. Как вывести экстраполя в шаблонах

Глава 6.1. Понимание структуры шаблонов

Шаблоны Cotonti находятся в папке вашей темы. Для модуля Page это:

/themes/ваша_тема/modules/page/

Основные файлы:

ФайлНазначение
page.tplПросмотр одной страницы
page.list.tplСписок страниц в категории
page.add.tplФорма добавления
page.edit.tplФорма редактирования

Глава 6.2. Теги для вывода экстраполей

Cotonti автоматически создаёт теги для каждого экстраполя. Схема именования:

ТегЧто выводит
{PAGE_ИМЯ_ПОЛЯ}Значение поля
{PAGE_ИМЯ_ПОЛЯ_TITLE}Описание поля
{PAGE_ИМЯ_ПОЛЯ_VALUE}Значение (альтернативный тег)

Например, если вы создали поле с именем product_price, то в шаблоне можно использовать:

{PAGE_PRODUCT_PRICE}

Глава 6.3. Вставка тега в шаблон

  1. Откройте файл page.tpl в любом текстовом редакторе.
  2. Найдите место, где нужно вывести поле.
  3. Вставьте тег.

Пример вывода цены:

<div class="product-price">
    Цена: {PAGE_PRODUCT_PRICE}
</div>

Пример вывода автора:

<div class="author">
    Автор: {PAGE_AUTHOR_NAME}
</div>

Глава 6.4. Условный вывод

Если поле может быть пустым, оберните его в условие:

<!-- IF {PAGE_PRODUCT_PRICE} -->
<div class="product-price">
    Цена: {PAGE_PRODUCT_PRICE}
</div>
<!-- ENDIF -->

Такой код выведет блок только если поле заполнено.

Глава 6.5. Вывод с описанием поля

<div class="extrafield">
    <strong>{PAGE_PRODUCT_PRICE_TITLE}:</strong>
    {PAGE_PRODUCT_PRICE}
</div>

Если поле описано в админке как «Цена товара», на сайте увидите: «Цена товара: 1500.00».

Глава 6.6. Цикл по всем экстраполям

Если у вас много экстраполей:

<!-- BEGIN: PAGE_EXTRAFLD -->
<div class="extrafield">
    <strong>{PAGE_EXTRAFLD_TITLE}:</strong>
    {PAGE_EXTRAFLD_VALUE}
</div>
<!-- END: PAGE_EXTRAFLD -->

Этот блок автоматически пройдёт по всем заполненным полям страницы.

Глава 6.7. Вывод в списке страниц

В файле page.list.tpl теги немного другие:

{PAGE_ROW_PRODUCT_PRICE}

Обратите внимание на ROW_ в середине. Это потому, что в списке каждая страница — отдельная строка цикла.

Глава 6.8. Очистка кэша после изменений

После правки шаблона:

  1. Сохраните файл.
  2. Откройте админку → «Управление сайтом» → «Кэш» → «Дисковый кэш».
  3. Нажмите «Очистить все».
  4. Откройте страницу на сайте и проверьте результат.

Глава 6.9. Схема формирования тега

Имя поля в админке: product_price
        ↓
Преобразование: PRODUCT_PRICE (в верхний регистр)
        ↓
Добавление префикса: PAGE_PRODUCT_PRICE
        ↓
Оборачивание в скобки: {PAGE_PRODUCT_PRICE}
        ↓
Вставка в шаблон

Часть 7. Практические примеры для разных типов сайтов

Глава 7.1. Интернет-магазин на Page

Экстраполя:

ИмяТипОписание
product_priceCurrencyЦена
product_old_priceCurrencyСтарая цена
product_skuInputАртикул
product_brandInputБренд
product_warrantyInputIntГарантия, мес.
product_instockCheckboxВ наличии

Вывод в карточке:

<h1>{PAGE_TITLE}</h1>
<!-- IF {PAGE_PRODUCT_SKU} -->
<div>Артикул: {PAGE_PRODUCT_SKU}</div>
<!-- ENDIF -->
<!-- IF {PAGE_PRODUCT_BRAND} -->
<div>Бренд: {PAGE_PRODUCT_BRAND}</div>
<!-- ENDIF -->
<!-- IF {PAGE_PRODUCT_PRICE} -->
<div>Цена: {PAGE_PRODUCT_PRICE}</div>
<!-- ENDIF -->

Глава 7.2. Блог о путешествиях

Экстраполя:

ИмяТипОписание
travel_countryCountryСтрана
travel_cityInputГород
travel_seasonSelectСезон
travel_budgetCurrencyБюджет
travel_daysInputIntДней

Значения для travel_season:

Весна
Лето
Осень
Зима
Круглый год

Глава 7.3. Каталог недвижимости

Экстраполя:

ИмяТипОписание
estate_areaDoubleПлощадь
estate_roomsInputIntКомнат
estate_floorInputIntЭтаж
estate_floors_totalInputIntЭтажей в доме
estate_has_balconyCheckboxБалкон
estate_priceCurrencyСтоимость

Глава 7.4. Портфолио фотографа

Экстраполя:

ИмяТипОписание
photo_cameraInputКамера
photo_lensInputОбъектив
photo_isoInputIntISO
photo_shutterInputВыдержка
photo_apertureInputДиафрагма

Глава 7.5. Кулинарный сайт

Экстраполя:

ИмяТипОписание
recipe_timeInputIntВремя, мин
recipe_portionsInputIntПорций
recipe_caloriesInputIntКалорий
recipe_difficultySelectСложность

Значения для recipe_difficulty:

Легко
Средне
Сложно

Часть 8. Частые ошибки и способы их решения

Ошибка 1. Поле не отображается на странице

ПричинаРешение
Ошибка в имени тегаПроверьте написание и регистр
Поле не заполненоЗаполните его в админке
Кэш не очищенОчистите кэш
Неправильный шаблонУбедитесь, что правите page.tpl, а не другой файл

Ошибка 2. Поле не отображается в форме редактирования

ПричинаРешение
Поле отключеноПоставьте галочку «Включено»
Поле создано для другой таблицыПроверьте field_location
Нет правВойдите как супер-администратор

Ошибка 3. Не создаётся поле

ПричинаРешение
Имя содержит запрещённые символыТолько латиница, цифры, подчёркивание
Имя занятоПридумайте другое
Нет правПроверьте права вашей группы

Ошибка 4. Ошибка при сохранении страницы

ПричинаРешение
Значение вне диапазонаПроверьте min/max
Неверный формат числаИспользуйте точку, а не запятую
Значение не соответствует типуПроверьте ввод

Ошибка 5. Значение выводится некорректно

ПричинаРешение
HTML-код в значенииИспользуйте правильный фильтр
Дата в формате timestampНастройте формат в параметрах
СпецсимволыПроверьте кодировку файла

Ошибка 6. Поле пропало после обновления

ПричинаРешение
Обновление ядраПроверьте cot_extra_fields, восстановите из бэкапа

Ошибка 7. Дублирование поля в форме

ПричинаРешение
Создали поле дваждыУдалите дубликат
Плагин добавляет своё полеОтключите плагин

Часть 9. Продвинутые приёмы

Глава 9.1. Группировка полей по разделам

Если экстраполей много, форма редактирования становится громоздкой. Один из способов — использовать категории для группировки.

Глава 9.2. Обязательные поля

Сделайте критичные поля обязательными, чтобы авторы не забывали их заполнять.

Глава 9.3. Значения по умолчанию

Для полей со статусами полезно указать значение по умолчанию: например, при создании новой страницы статус автоматически становится «Черновик».

Глава 9.4. Использование в SEO

Экстраполя можно использовать для SEO: выводить мета-теги, описания, ключевые слова.

Глава 9.5. Вывод в других местах сайта

Экстраполя можно выводить не только на странице, но и в списках, виджетах, специальных блоках.

ГдеПрефикс тега
Страница (одиночная)PAGE_
Список страницPAGE_ROW_
Виджет на главнойЗависит от виджета

Глава 9.6. Сортировка и фильтрация

По экстраполям можно сортировать и фильтровать страницы, но для этого нужны специальные плагины или дополнительная настройка.

Глава 9.7. Экспорт и импорт значений

Если у вас тысячи страниц, заполнять экстраполя вручную неудобно. Есть два пути: прямая работа с базой данных или плагины для импорта.

Глава 9.8. Резервное копирование

Перед созданием новых экстраполей всегда делайте резервную копию базы данных.


Часть 10. Ответы на вопросы начинающих

Вопрос 1. Сколько экстраполей можно создать?

Технически — до тысячи полей на таблицу. Практически — рекомендуется не более 20–30, чтобы не перегружать форму редактирования.

Вопрос 2. Можно ли использовать экстраполя в других модулях?

Да, для каждого модуля свои экстраполя: пользователи, форумы, магазин.

Вопрос 3. Что делать, если экстраполе больше не нужно?

Можно отключить поле или удалить. Отключение безопаснее — данные сохраняются.

Вопрос 4. Как изменить тип поля?

Тип поля нельзя изменить после создания. Нужно удалить старое и создать новое.

Вопрос 5. Можно ли сделать экстраполе обязательным?

Да, в настройках есть флажок «Обязательное».

Вопрос 6. Что будет с экстраполями при обновлении Cotonti?

Экстраполя сохраняются при обновлении.

Вопрос 7. Как перенести экстраполя на другой сайт?

Через экспорт/импорт таблиц cot_extra_fields и cot_pages.

Вопрос 8. Можно ли использовать экстраполя в фильтрах?

Да, но это требует разработки или готовых плагинов.

Вопрос 9. Можно ли создать экстраполе через API?

Да, есть API для создания полей.

Вопрос 10. Как оптимизировать работу с большим количеством экстраполей?

Советы: не создавайте неиспользуемые поля, используйте кэширование, разделяйте поля по группам.

Вопрос 11. Влияют ли экстраполя на скорость сайта?

Одно-два поля — нет. Много полей (30+) могут замедлить выборку данных.

Вопрос 12. Как проверить, что экстраполе работает?

Создайте страницу, заполните поле, сохраните, откройте страницу.

Вопрос 13. Что делать, если экстраполе отображается не там, где нужно?

Проверьте место вставки тега в шаблоне.

Вопрос 14. Можно ли стилизовать экстраполя?

Да, каждому полю можно задать CSS-класс.

Вопрос 15. Работают ли экстраполя в мобильной версии?

Да, если они корректно вставлены в шаблон.


Заключение

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

Мы разобрали и надеюсь помог найти ответы на вопросы:

  • Что такое экстраполя и зачем они нужны?
  • Какие типы полей поддерживает Cotonti?
  • Как создать экстраполе для модуля Page?
  • Как вывести экстраполе в шаблонах?
  • Какие ошибки бывают и как их решать?
  • Какие продвинутые возможности существуют?

Главные правила:

  1. Всегда делайте резервную копию перед созданием экстраполей.
  2. Планируйте поля заранее.
  3. Давайте осмысленные имена.
  4. Очищайте кэш после изменений.
  5. Используйте условный вывод, чтобы не показывать пустые поля.

Любые вопросы по экстраполя в Cotonti задавайте на форуме!

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям
webitproff
webitproff

Онлайн

Последняя авторизация: 12.10.2026 18:21

Обо мне кратко
Поддержка и разработка веб-проектов на CMF Cotonti: приватные мессенджеры через сайт, открытые и закрытые небольшие социальные сети, торговые площадки и маркетплейсы, портал биржи фриланса и услуг, каталоги товаров оптовых поставщиков, дропшиппинг-платформы, интернет-магазины и многое другое.
Смотреть разработки и скачать
Публичное портфолио моих работ и разработок
Телеграм для сообщений
@webitproff
Телеграм-канал
@s/aBuyFILE
Публичный профиль
  • Дата размещения 10.10.2026 00:00
  • Обновлено 12.10.2026 16:30

Похожие страницы

Экстраполя в шаблонах в модуле "Page" Cotonti
1 В коде Cotonti в модуле "Page" для добавления страницы есть участок, который обрабатывает дополнительные поля
Экстраполя Cotonti: тип данных datetime — Дата и время
2 Экстраполя Cotonti: тип данных datetime — Дата и время Оглавление 1. Общие сведения 2. Хранение значения в базе
Локализация (перевод) названия и значений экстраполя
3 подробная пошаговая инструкция для новичков: как создать экстраполе типа select (выпадающий список) с названием «статус
Полное руководство по настройке ЧПУ для модуля Forums в Cotonti
4 Это руководство поможет вам настроить красивые URL для разделов, тем и сообщений форума Cotonti. В результате
Google обновляет руководство по SEO для начинающих
5 Google обновляет руководство по SEO для начинающих, чтобы сосредоточиться на целевой аудитории Руководство Google по