Skip to content

Добавить новую модель msOptionGroup #10

Closed

Description

@createit-ru

Предлагаю добавить новую модель msOptionGroup и использовать её для группировки опций вместо modCategory.

Какие преимущества?

  1. При создании новой опции в поле "Группа" сейчас выводится список всех modCategory, там и те, что созданы разными компонентами, и те, что разработчики создают для группировки TV полей, все в куче.
  2. Сложность в управлении modCategory, в частности их сортировки. Управлять сортировкой modCategory в интерфейсе MODx крайне не удобно.
  3. Не самое важное, но все же: убрать некоторую путаницу в слове Category, т.к. сейчас есть msCategory и modCategory.

Примечание к п.2.

Мысль 1: Возможно, объект msOptionGroup будет проще поддаваться локализации при создании мультиязычных сайтов (в том случае, если на фронте опции тоже выводятся с группировкой).
Мысль 2: реализовать привязку опций к категориям ms3 целыми группами.
Кейс: есть опции width, height, length, которые находятся в группе "Размеры".
Заходим в некую msCategory в админке и вместо того, чтобы привязывать опции по одной можно выбрать сразу группу "Размеры" и привязать все опции из нее. Конечно, это реализуемо и с modCategory, но снова придем к тому, что в списке будет много лишнего.

Activity

  1. biz87 commented on Feb 15, 2026

    @biz87
    Member

    Анализ актуальности

    Предложение актуально. Текущая реализация группировки через modCategory имеет перечисленные недостатки.

    Текущая реализация

    • Поле msOption.modcategory_id ссылается на modCategory (стандартная категория MODX)
    • В списке групп при создании опции показываются все категории MODX — включая созданные другими компонентами и для TV-полей
    • Нет удобного управления сортировкой групп опций
    • На фронтенде группы не передаются — опции выводятся плоским списком

    Мнение

    Предложение обоснованное, но это значительная архитектурная работа с низким приоритетом. Текущая система работает, проблема скорее в UX админки.

    Альтернативный подход — фильтрация списка modCategory, чтобы показывать только категории, уже используемые опциями MS3. Это решит пункт 1 без новой модели.

    План работ (если реализовывать полноценно)

    1. Модель: создать msOptionGroup (id, name, description, sort_order) + XML-схема, миграция, класс, маппинг
    2. Миграция данных: добавить поле option_group_id в ms3_options, мигрировать существующие modcategory_id
    3. CRUD-процессоры: Create, Get, GetList, Update, Remove, Sort для msOptionGroup
    4. UI админки: Vue-компонент или ExtJS-грид для управления группами + обновить комбобокс выбора группы при редактировании опции
    5. API: endpoint для групп в роутере
    6. Фронтенд: передавать группы в сниппет ms3_product_options, обновить чанки
    7. Обратная совместимость: сохранить modcategory_id как deprecated

    Объём: значительный (модель + миграция + процессоры + UI + API). Рекомендую планировать на отдельный минорный релиз.

  2. added
    priority: lowНизкий приоритет, когда будет время
    on Feb 15, 2026
  3. added a commit that references this issue on May 20, 2026
  4. added a commit that references this issue on May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: lowНизкий приоритет, когда будет время

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions