Сторінки, статті та новини
Інструменти та плагіни
Заготовка заголовок


Опис як приклад заготовки. Приклад текстового контенту для подальшої кастомізації шаблону "Index36".

Редагувати шаблон можна на власний розсуд. Якщо у вас немає часу або знань – завжди можна замовити адаптацію шаблону, написавши мені через GitHub або особисті повідомлення на публічній сторінці маркетплейсу цифрових товарів.

18.08.2025 18:53

Админ-панель MultiStore: Возможности и план улучшений

Админ-панель модуля MultiStore (файл mstore.admin.php, Cotonti Siena 0.9.26, PHP 8.4) предназначена для управления товарами и очередью валидации. Доступна только администраторам с правами в категории 'mstore' ('any'), проверяется через cot_auth и cot_block(Cot::$usr['isadmin']). Интерфейс формируется шаблоном mstore.admin.tpl с использованием XTemplate. Ниже описаны текущие возможности и план их расширения.

Текущие возможности админ-панели

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

1. Просмотр списка товаров

  • Загрузка данных: Товары загружаются из таблицы cot_mstore с JOIN на cot_users для получения имени владельца (user_name).
  • Фильтры по состоянию (параметр filter из POST/GET, по умолчанию 'valqueue'):
    • 'all': Все товары с непустым заголовком (msitem_title IS NOT NULL AND msitem_title != '').
    • 'valqueue': Товары на рассмотрении (msitem_state = 1, STATE_PENDING).
    • 'validated': Опубликованные товары (msitem_state = 0, STATE_PUBLISHED).
    • 'drafts': Черновики (msitem_state = 2, STATE_DRAFT).
  • Ограничение по категориям: Показываются товары только из категорий, доступных администратору (через cot_structure_children('mstore', '')).
  • Сортировка:
    • Поле сортировки (sorttype из POST/GET, по умолчанию 'id'): 'id', 'title', 'desc', 'text', 'ownerid', 'date', 'count', 'updated', 'cat', плюс экстрафилды из cot_mstore_config_order(true).
    • Направление (sortway: 'asc' или 'desc', по умолчанию 'desc').
    • SQL: ORDER BY msitem_[sorttype] [sortway].
  • Пагинация: Реализована через cot_import_pagenav('d', Cot::$cfg['mstore']['mstoremaxlistsperpage']), с тегами пагинации через cot_generatePaginationTags.
  • Отображение:
    • Цикл по товарам: Каждый товар отображается с тегами через cot_generate_mstoretags($row, 'ADMIN_MSTORE_', 200) (URL, ID, заголовок, описание, статус, даты, просмотры).
    • Дополнительные теги: Владелец (cot_build_user), чередование строк (cot_build_oddeven), счетчик товаров в категории (SUM structure_count по path).
    • Чекбоксы для массовых действий (s[$id]).
  • Статистика:
    • Общее количество товаров в БД: Cot::$db->countRows($db_mstore).
    • Товаров на странице: Подсчет в цикле ($ii).
    • Товаров на рассмотрении: SQL COUNT(*) WHERE msitem_state=1, сохраняется в $sys['mstorequeued'].

2. Массовые действия над товарами

  • Форма: Отправка на URL admin?m=mstore&a=update_checked&d=[страница] с массивом чекбоксов s[].
  • Валидация (paction='validate'):
    • Цикл по $s: Для каждого ID меняет msitem_state на STATE_PUBLISHED=0.
    • Проверка прав: cot_auth('mstore', $row['msitem_cat'], 'A').
    • Логи: cot_log("Mstore #$id - adm_queue_validated", 'mstore', 'validate', 'done').
    • Очистка кэша: structure, URI товара/категории, индекс (если cache_mstore или cache_index).
  • Удаление (paction='delete'):
    • Цикл по $s: Вызов MstoreControlService::delete($id) для каждого.
    • Логи и очистка кэша.
  • Подтверждение: Через cot_check_xp().
  • Сообщения: Список успешных ID (perelik), ошибки для не найденных (notfoundet).
  • Редирект: На текущую страницу (cot_url('admin', $urlParams)).

3. Действия над отдельным товаром

  • Валидация (a=validate&id=[ID]):
    • SQL: Проверяет текущий msitem_state, меняет на STATE_PUBLISHED=0, если не published.
    • Проверка прав: cot_auth('mstore', $row['msitem_cat'], 'A').
    • Лог: cot_log("Mstore #$id - adm_queue_validated").
    • Кэш: Очищает structure, URI товара/категории, индекс.
    • Подтверждение: cot_check_xg().
  • Отмена валидации (a=unvalidate&id=[ID]):
    • Меняет на STATE_PENDING=1, если не pending.
    • Те же проверки, лог и кэш.
  • Удаление (a=delete&id=[ID]):
    • Вызов: MstoreControlService::delete($id).
    • Подтверждение: cot_check_xg().
    • Лог и очистка кэша.
  • Редактирование: Ссылка на mstore?m=edit&id=[ID].
  • Просмотр: Ссылка на товар через cot_mstore_url($row) (параметры: c, id или al).
  • Редирект: На backUrl (GET, base64_decode) или текущую страницу.

4. Навигация и интерфейс

  • Хлебные крошки: Extensions > MultiStore > Administration (массив $adminPath).
  • Ссылки:
    • Конфиг модуля: admin?m=config&n=edit&o=module&p=mstore.
    • Добавление товара: mstore?m=add.
    • Экстрафилды: admin?m=extrafields&n=cot_mstore.
    • Структура категорий: admin?m=structure&n=mstore.
  • Форма фильтров:
    • Сортировка: cot_selectbox($sorttype, 'sorttype').
    • Направление: cot_selectbox($sortway, 'sortway').
    • Фильтр: cot_selectbox($filter, 'filter').
  • Сообщения: Успех/ошибки через cot_display_messages($t) (например, '#ID - adm_queue_validated').
  • Заголовок и помощь: $adminTitle = Cot::$L['mstore_Mstore'], $adminHelp = Cot::$L['adm_help_mstore'].

5. Хуки для расширения

  • mstore.admin.first: Перед основным кодом.
  • mstore.admin.validate, mstore.admin.validate.done: Для валидации.
  • mstore.admin.unvalidate: Для отмены валидации.
  • mstore.admin.delete, mstore.admin.delete.done: Для удаления.
  • mstore.admin.checked_validate, mstore.admin.checked_delete: Для массовых действий.
  • mstore.admin.loop: В цикле списка товаров.
  • mstore.admin.tags: Для тегов шаблона.

6. Дополнительно

  • Логи: Действия логируются через cot_log (например, 'Mstore #ID - adm_queue_validated').
  • Кэш: Очищается после действий: Cot::$cache->db->remove('structure'), Cot::$cache->static->clearByUri для товара/категории, clear('index') (если включено).
  • Структура: Cot::$structure['mstore'] загружается для подсчета товаров по категориям.

План улучшений (TODO)

План основан на текущем коде и ориентирован на расширение функционала без радикальных изменений.

  1. Текстовый поиск: Добавить параметр sq для поиска по msitem_title и msitem_text (LIKE '%$sq%'), с полем ввода в форме и параметром $params['sq'] в SQL.
  2. Новые фильтры: Добавить в $filter_type фильтры по дате (msitem_date, msitem_updated), владельцу (msitem_ownerid), просмотрам (msitem_count), с селектами в форме.
  3. Массовое редактирование: Добавить paction='edit' в a=update_checked для изменения категории или статуса через cot_mstore_update, с проверкой прав.
  4. Экспорт в CSV: Внедрить paction='export', собирать данные через cot_generate_mstoretags, формировать CSV с полями (id, title, state, owner).
  5. Экстрафилды в списке: Добавить теги экстрафилдов в cot_generate_mstoretags для цикла списка, с сортировкой через cot_mstore_config_order.
  6. Статистика с графиками: Добавить SQL для подсчета по категориям (аналог $sys['mstorequeued']) и теги для графиков просмотров (msitem_count).
  7. AJAX для списка: Если Cot::$cfg['jquery'] && Cot::$cfg['turnajax'], добавить JS для динамической загрузки списка при пагинации и сортировке.
  8. Новые хуки: Добавить mstore.admin.filters для кастомных условий в $sqlwhere и mstore.admin.custom_action для новых кнопок.
  9. Безопасность: Ограничить количество товаров в $s (например, max 100) перед массовыми действиями.
  10. Интеграция с модулями: Добавить теги для ссылок на заказы/платежи в mstore.admin.loop, если плагины активны.

Визуализация работы админ-панели

Схема процесса управления товарами:

    ____________________________
    | 1. Загрузка списка       |
    |   (SQL с фильтрами)      |
    |__________________________|
               |
               |
               V
    ____________________________
    | 2. Проверка прав доступа |
    |   (cot_auth, isadmin)    |
    |__________________________|
               |
               |
               V
    ____________________________
    | 3. Фильтры и сортировка  |
    |   (filter, sorttype, way)|
    |__________________________|
               |
               |
               V
    ____________________________
    | 4. Отображение в шаблоне |
    |   (cot_generate_mstoretags)|
    |__________________________|
               |
               |
               V
    ____________________________
    | 5. Действия (валидация,  |
    |    удаление, редактир.)  |
    |__________________________|
               |
               |
               V
    ____________________________
    | 6. Лог и очистка кэша    |
    |   (cot_log, cache clear) |
    |__________________________|
    
Обліковий запис