Управление контентом

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

Что такое списки?

Списки (Lists) - это таблицы с данными сайта, которые управляются через админку:

  • Products - товары каталога
  • News - новости и статьи
  • Gallery - фотогалерея
  • Contacts - контактные данные
  • Brands - бренды и производители
  • Любые кастомные таблицы

Интерфейс списка

Элементы интерфейса

  1. Панель управления

    • Кнопка Добавить - создать новую запись
    • Поле Поиск - найти запись по названию/ID
    • Фильтры - отбор по параметрам
  2. Таблица данных

    • Чекбоксы для множественного выбора
    • Колонки с данными
    • Кнопки действий (редактировать, удалить)
  3. Пагинация

    • Переключение страниц
    • Выбор количества записей на странице

Действия с записями

Иконка Действие Описание
✏️ Редактировать Открыть форму редактирования
🗑️ Удалить Удалить запись (с подтверждением)
👁️ Просмотр Предпросмотр на сайте
📋 Копировать Создать копию записи

Создание записи

Шаг 1: Открыть форму

  1. Перейдите в нужный список (например, Списки → Products)
  2. Нажмите кнопку Добавить

Шаг 2: Заполнить поля

Обязательные поля

Отмечены звездочкой * - должны быть заполнены:

Name* - Название (обязательно)
Description - Описание (необязательно)

Типы полей

Система поддерживает следующие типы полей (определяются в таблице s_ConfigFields):

Текстовые поля

text - обычное текстовое поле

Примеры использования:
- Название раздела (s_Navigator.Name)
- Имя пользователя (s_Users.Name)
- Заголовок товара (Products.Name)

latin - текстовое поле с ограничением на латиницу

Используется для технических идентификаторов:
- Имя таблицы (s_Config.TableName)
- Алиас URL (Products.Alias)
- Имя поля (s_ConfigFields.Field)

email - поле для email с валидацией

Пример: s_Users.Email

password - поле для пароля

При отображении показывается как текстовое поле
Пример: s_Users.Password

Особенности:
- Новый пароль автоматически хэшируется (password_hash) при сохранении
- При редактировании записи старый хэш не перезаписывается, 
  если поле не было изменено пользователем
Числовые поля

int - целое число

Примеры:
- ID записи (Products.Id)
- Приоритет сортировки (s_Navigator.Priority)
- Количество (Products.Quantity)

digit - число с дробной частью

Примеры:
- Цена (Products.Price: 1500.50)
- Вес (Products.WeightPack: 2.5)
- Сумма заказа (Orders.OSum)
Дата и время

date - дата и время

Формат: YYYY-MM-DD HH:MM:SS
Отображается календарь для удобного выбора даты

Примеры:
- Дата публикации новости (News.NDate)
- Дата создания раздела (s_Navigator.Date)
- Дата авторизации (s_Users.AuthDate)
Логические значения

flag - чекбокс (0 или 1)

Примеры:
☑ IsHidden - Скрыть запись
☑ IsActive - Активность
☑ Required - Обязательное для заполнения
☑ IsNew - Новинка
☑ IsHit - Хит продаж
Многострочные текстовые поля

area - текстовая область (textarea)

Используется для:
- Анонсов (News.Announce)
- Описаний (Products.Descr)
- Мета-тегов (s_Navigator.MetaDescription)
- JSON-данных (Orders.JData)

Поддерживает:
- Многострочный текст
- HTML-разметку (с визуальным редактором TinyMCE)
- Большие объемы текста

Визуальный редактор включается кликом по ссылке "визуальный редактор" 
под полем и позволяет форматировать текст без знания HTML

blob - большая текстовая область

Для очень больших объемов данных
Используется реже, чем area
Выпадающие списки

select::TableName::FieldName - выбор одного значения

Форматы:
- select::TableName::DisplayField
- select::TableName::DisplayField::WhereCondition
- select::TableName::DisplayField::WhereCondition::OrderField

Примеры:
- select::s_Permissions::Name (выбор роли пользователя)
- select::s_NGroups::Name (выбор группы навигации)
- select::OrdersStatuses::Name (выбор статуса заказа)
- select::s_Navigator::Name::IsHidden=0 (только видимые разделы)

select_multi::TableName::FieldName - множественный выбор

Аналогично select, но можно выбрать несколько значений
Примеры:
- select_multi::s_Navigator::Name (выбор нескольких разделов)
- select_multi::s_ConfigExtensions::Name (выбор расширений)

dbtable / dbtable_multi - выбор из связанной таблицы

Альтернативный формат для select
Удаленный выбор через API

remote_multi::TableName::FieldName::Conditions - множественный выбор через AJAX

Для больших списков с поиском и подгрузкой данных
Пример:
- remote_multi::Products::Name::IsHidden in (0,1)

Особенности:
- Использует Select2
- Поиск по мере ввода
- Подгрузка порциями
Файлы и изображения

file - загрузка файлов

Примеры:
- Products.Images - изображения товара
- s_Navigator.Files - файлы раздела
- News.Images - изображение новости

Возможности:
- Множественная загрузка
- Drag & Drop
- Автоматическое создание превью
- Сортировка файлов перетаскиванием
Специальные типы

minitable::Field1;Field2;Field3 - встроенная таблица

Для редактирования табличных данных внутри формы
Формат: minitable::Заголовок1;Заголовок2;Заголовок3

Примеры:
- minitable::Цвет;Размер;SKU;Остатки (для вариаций товара)
- minitable::Field1;Field2

Особенности:
- Добавление/удаление строк
- Редактирование ячеек inline
- Сохранение в JSON-формате

properties - динамические свойства

Связь с таблицей s_Properties и s_PropertiesGroups
Позволяет добавлять гибкие характеристики:
- Выбор группы свойств
- Автоматическое отображение полей группы
- Разные типы свойств (select, text-multi)
- Добавление новых опций на лету

Используется для:
- Характеристик товаров
- Настроек расширений
- Гибких конфигураций

Шаг 3: Загрузить файлы

  1. Найдите блок Файлы в форме
  2. Нажмите Добавить файлы
  3. Дождитесь завершения загрузки

Шаг 4: Сохранить

Нажмите кнопку Сохранить вверху или внизу формы. Для удобства используйте Ctrl+S.

Редактирование записи

Одиночное редактирование

  1. В списке найдите нужную запись
  2. Нажмите иконку ✏️ Редактировать
  3. Измените данные в форме
  4. Нажмите Сохранить

Быстрое редактирование (inline)

Некоторые поля можно редактировать прямо в таблице:

  1. Дважды кликните по ячейке таблицы
  2. Измените значение
  3. Нажмите Enter или Ctrl+S
  4. Изменения сохранятся автоматически

Удаление записей

Удалить одну запись

  1. Нажмите иконку 🗑️ у записи
  2. Подтвердите удаление в диалоге
  3. Запись будет удалена безвозвратно

⚠️ Внимание: Удаление необратимо! Создавайте резервные копии БД перед массовым удалением.

Поиск и фильтрация

Простой поиск

В поле поиска введите запрос:

Поиск по:
- Названию (Name)
- ID записи
- Артикулу (Article)
- Другим текстовым полям

Примеры:

Смартфон         → найдет все товары со словом "смартфон"
ART-12345        → найдет товар с артикулом ART-12345
15               → найдет запись с ID=15

Фильтры

Используйте фильтры для точного отбора:

Фильтр по статусу:

Активные: IsActive = 1
Неактивные: IsActive = 0

Фильтр по категории:

Выберите категорию из списка

Фильтр по дате:

С 01.01.2025 по 31.12.2025

Сортировка

Кликните на заголовок колонки для сортировки:

  1. Первый клик - сортировка по возрастанию ↑
  2. Второй клик - сортировка по убыванию ↓
  3. Третий клик - сброс сортировки

Работа с файлами и изображениями

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

Принцип работы:

  • Каждый файл привязан к конкретному элементу списка
  • Нет общей папки с файлами - файлы принадлежат записи
  • Загруженные файлы доступны в визуальном редакторе для вставки в текст
  • Ограничений на типы файлов практически нет (настраивается на уровне сервера, размер файлов и их количество при одновременной загрузке, рекомендуем 20 шт)

Загрузка файлов

Способ 1: Кнопка загрузки

  1. Нажмите Загрузить
  2. Выберите файлы в диалоге
  3. Дождитесь загрузки (появится прогресс-бар)

Управление файлами

Просмотр:

  • Кликните по миниатюре для увеличения

Сортировка:

  • Перетащите файлы для изменения порядка
  • Первый файл = главное изображение (обложка)

Массовые операции с файлами:

  1. Нажмите ссылку "выделить" под заголовком поля
  2. Кликайте по файлам для их выбора (можно выбрать несколько)
  3. Появятся кнопки массовых действий:
    • ✏️ Редактировать - изменить описание всех выделенных файлов
    • 🗑️ Удалить - удалить все выделенные файлы
  4. Для отмены выделения нажмите "выделить" повторно

Индивидуальные действия:

  • 📋 Копировать ссылку - скопировать URL файла в буфер обмена
  • ✏️ Редактировать - открыть карточку файла для детальной настройки
  • 🗑️ Удалить - удалить конкретный файл

Использование в редакторе:

  • Загруженные файлы автоматически доступны в визуальном редакторе TinyMCE
  • Можно вставлять изображения и ссылки на документы прямо в текст

Автоматическая обработка

Система автоматически создает ресайзы изображений:

  • Оригинал - /files/lists/{Table}/{filename}
  • Превью - /pic/preview/files/{filename} (200x200)
  • Средний - /pic/medium/files/{filename} (600x600)

Сортировка записей

Поле Priority

Большинство таблиц имеют поле Priority для ручной сортировки.

Правило: Чем больше число, тем выше в списке.

Пример:

Priority: 100 → Хит 1 (первый в списке)
Priority: 90  → Хит 2
Priority: 80  → Обычный товар 1
Priority: 70  → Обычный товар 2
Priority: 0   → Последний товар

Изменение Priority:

  1. Откройте запись для редактирования
  2. Измените поле Priority
  3. Сохраните

Копирование записей

Создание копии существующей записи:

  1. Откройте запись для редактирования
  2. Нажмите кнопку Копировать
  3. Система создаст копию с:
    • Теми же данными
    • Копиями всех файлов (физически дублируются на диске)
    • Новым ID
  4. Отредактируйте скопированную запись
  5. Сохраните

Полезно для:

  • Создания похожих товаров
  • Шаблонов новостей
  • Копирования настроек

Полезные советы

Горячие клавиши

  • Ctrl + S или нажать Enter - сохранить форму
  • Tab - переход между полями

Решение проблем

Не сохраняется запись

Причины:

  1. Не заполнены обязательные поля (*)
  2. Некорректный формат данных (например, текст в числовом поле)
  3. Дублирующийся уникальный ключ (URL, артикул)

Решение:

  • Проверьте красные подсветки полей
  • Посмотрите сообщение об ошибке
  • Заполните все обязательные поля

Не загружается файл

Причины:

  1. Слишком большой размер (лимит PHP)
  2. Недопустимый формат файла
  3. Недостаточно места на диске

Решение:

  • Проверьте размер файла (максимум обычно 8-16 МБ)
  • Убедитесь, что формат разрешен
  • Оптимизируйте изображение

Пропала запись из списка

Причины:

  1. Установлен фильтр
  2. Запись на другой странице пагинации

Решение:

  • Сбросьте все фильтры
  • Проверьте пагинацию
  • Поищите по разным полям через поиск

Дополнительные материалы