Сообщение об ошибке
Резюме
pdoTools не поддерживает дополнительные категории (msCategoryMember) для MiniShop3 из-за различий в именовании классов.
Шаг для воспроизведения
- Установить MiniShop3 на MODX 3.x
- Создать товар в категории A (parent = A)
- Добавить товар в дополнительную категорию B через админку
- Вызвать сниппет:
[[!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+
Сообщение об ошибке
Резюме
pdoTools не поддерживает дополнительные категории (msCategoryMember) для MiniShop3 из-за различий в именовании классов.
Шаг для воспроизведения
[[!msProducts? &parents=`B`]]Наблюдаемое поведение
Товар не выводится, хотя он привязан к категории B через msCategoryMember.
Ожидаемое поведение
Товар должен выводиться, так как он привязан к категории B через дополнительные категории.
Причина
В файле
Fetch.php(строки 790-792) проверка:Проверка ищет строку
'msCategory', но MiniShop3 регистрирует класс с namespace:msCategorymsCategoryMiniShop3\Model\msCategoryMiniShop3\Model\msCategoryПредлагаемое решение
Environment