Skip to content

pdoTools v3 не поддерживает дополнительные категории (msCategoryMember) для MiniShop3 из-за различий в именовании классов. #391

@biz87

Description

@biz87

Сообщение об ошибке

Резюме

pdoTools не поддерживает дополнительные категории (msCategoryMember) для MiniShop3 из-за различий в именовании классов.

Шаг для воспроизведения

  1. Установить MiniShop3 на MODX 3.x
  2. Создать товар в категории A (parent = A)
  3. Добавить товар в дополнительную категорию B через админку
  4. Вызвать сниппет:
[[!msProducts? &parents=`B`]]

Наблюдаемое поведение

Товар не выводится, хотя он привязан к категории B через msCategoryMember.

Ожидаемое поведение

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

Причина

В файле Fetch.php (строки 790-792) проверка:

// Support of miniShop2 categories
$members = [];
if (in_array('msCategory', $this->modx->classMap[modResource::class]) && empty($this->config['disableMS2'])) {

Проверка ищет строку 'msCategory', но MiniShop3 регистрирует класс с namespace:

Компонент class_key в БД Значение в classMap
miniShop2 msCategory msCategory
MiniShop3 MiniShop3\Model\msCategory MiniShop3\Model\msCategory

Предлагаемое решение

-// Support of miniShop2 categories
+// Support of miniShop2/miniShop3 categories
 $members = [];
-if (in_array('msCategory', $this->modx->classMap[modResource::class]) && empty($this->config['disableMS2'])) {
+$hasMsCategory = in_array('msCategory', $this->modx->classMap[modResource::class] ?? [])
+    || in_array('MiniShop3\\Model\\msCategory', $this->modx->classMap[modResource::class] ?? []);
+
+if ($hasMsCategory && empty($this->config['disableMS2'])) {

Environment

  • MODX 3.0.0+
  • MiniShop3 1.x
  • pdoTools 3.x
  • PHP 8.1+

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions