Skip to content

Индивидуальный menuindex для товаров в дополнительных категориях - #627

Open
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-625-category-member-menuindex
Open

Индивидуальный menuindex для товаров в дополнительных категориях#627
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-625-category-member-menuindex

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

У товара был один глобальный menuindex в ресурсе. Связь с доп. категориями (ms3_product_categories) не хранила порядок. DnD в категории B переписывал ресурсный menuindex и ломал выкладку в основной категории A. На витрине sortby=menuindex тоже смотрел только на ресурс.

Теперь:

  • колонка menuindex на ms3_product_categories (+ миграция с backfill только при первом добавлении колонки);
  • native (parent = категория) пишет msProduct.menuindex, member — только связь;
  • грид/каталог/ms3_products сортируют по effective CASE … COALESCE(member, product);
  • nested-грид использует весь scope category IDs для join/sort;
  • upsert membership сохраняет существующий порядок; новые member получают MAX(native, member)+1.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #625

Как это было протестировано?

cd core/components/minishop3
php tests/CategoryProductMenuindexServiceTest.php          # exit 0
php tests/ProductCategoryMembershipWriterTest.php          # exit 0
php tests/CategoryProductScopeServiceTest.php              # exit 0
php tests/CategoryProductsControllerScopeTest.php          # exit 0
php tests/ProductCatalogServiceTest.php                    # exit 0
php -l …touched PHP…                                       # exit 0
  • Ручное тестирование (DnD в доп. категории после миграции)
  • Автоматические тесты (smoke выше)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: fix/issue-625-category-member-menuindex от beta
  • MODX: n/a (smoke)
  • PHP: 8.4.17

Скриншоты (если применимо)

N/A (модель данных / API / сортировка).

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы — новых UI-строк нет
  • PHPStan — прогон в CI
  • ESLint — Vue не тронут
  • CHANGELOG.md — на релизе

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

  • Нужен прогон Phinx на стенде перед ручной проверкой DnD.
  • ExtJS Processors/Product/Sort.php не менялся (вне scope; Vue REST path покрыт).
  • Gate F: HIGH nested join/sort и MEDIUM next-index/backfill исправлены. Отложено: полный единый apply-API для regex-ветки ms3_products (thermo soft).

Store ordering on ms3_product_categories so DnD in one category does not
rewrite the product resource menuindex used by its primary parent.
PSR-4 maps MiniShop3\Tests\Stubs to tests/Stubs; stub files live under
tests/stubs. Linux CI is case-sensitive and autoload misses the class.
@Ibochkarev
Ibochkarev requested a review from biz87 August 22, 2026 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Нет индивидуального menuindex для товаров в дополнительных категориях

1 participant