Почему некий модуль требует наличия товарного свойства в коллекции товаров?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Виталий Егоров
  • Группа: Клиент
  • Сообщений: 20
  • Регистрация: 24.03.2016

26.03.2016 04:43

с отчетов об ошибок var/log поняли, что некий модуль требует наличия товарного свойства «sku» в коллекции товаров.
Раньше, до покупки РСМ, сбоев в работе магазина не было. Следовательно, это новый модуль из РСМ. Из-за других соображений атрибут СКУ был удален с базы данных
Вопрос: Возможно ли внести изменение в код модуля, чтобы он не зависел от ску?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

26.03.2016 12:15

Для сохранения товаров в базе данных Magento использует технологию EAV.
Эта технология позволяет менять структуру хранимых данных без программирования.
В частности, благодаря этой технологии администратор Magento имеет возможность создавать прикладные типы товаров и добавлять к ним новые свойства.
Обратной стороной технологии EAV является нагрузка на базу данных, потому что для извлечения из базы данных информации о товаре Magento приходится обращаться сразу ко многим таблицам базы данных.
Для ускорения работы в Magento присутствует и опционально включается технология денормализации.

Цитата

Денормализация (англ. denormalization) — намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.

https://ru.wikipedia.../Денормализация
При денормализации Magento заранее собирает информацию о товаре в дополнительную таблицу.
Этот процесс называется перестройкой расчётной таблицы.
Администратор магазина может перестраивать расчётные таблицы посредством административного интерфейса, так же это можно делать с командной строки.
Для ускорения работы Magento включает в расчётную таблицу не все свойства товаров, а лишь указанные администратором.
Чтобы товарное свойство попадало в денормализованную таблицу, надо открыть административный экран настроек данного товарного свойства
Каталог» → «Типы и свойства» → «Свойства товаров»), указать «да» в качестве значения опции «Загружать ли данное свойство в товарные коллекции?» и затем перестроить расчётные таблицы.

Российская сборка Magento содержит уникальный модуль «Рекомендации администратору».
Этот модуль выполняет самодиагностику магазина и интерактивно даёт администратору различные рекомендации.
В частности, этот модуль рекомендует включать режим денормализации, потому что этот режим ускоряет работу магазина.

Итак, перечень заложенных в денормализованную таблицу свойств товаров настраивается администратором конкретного магазина.
Сторонний модуль или оформительская тема не может знать, какие свойства заложены в конкретном магазине
Если какой-то модуль или оформительская тема попробует извлечь из денормализованной таблицы те свойства, которые в неё не были заложены, то Magento Community Edition не рассматривает это как сбой, просто данные будут отсутствовать.
Это усложняет диагностику, потому что непонятно, по какой причине данные отсутствуют.

Модуль «Рекомендации администратору» отслеживает обращения к денормализованной таблице и сообщает администратору диагностическим отчётами о ситуациях, когда некий модуль или оформительская тема хочет получить данные, которые в денормализованной таблице отсутствуют.
Это упрощает диагностику проблем работы магазина, когда данные по неизвестной причине не отображаются.

Отчёт выглядит так:

Цитата

Некий модуль или оформительская тема требует наличия товарного свойства «em_featured» в коллекции товаров, однако сейчас это свойство настроено таким образом, что оно в коллекцию товаров не попадёт.
Чтобы это товарное свойство попадало в коллекцию товаров, Вам надо сейчас открыть административный экран настроек данного товарного свойства
(«Каталог» → «Типы и свойства» → «Свойства товаров»), указать «да» в качестве значения опции «Загружать ли данное свойство в товарные коллекции?» и затем перестроить расчётные таблицы.


Когда администратор видит этот отчёт, для него самым разумным будет сделать конкретно то, что в этот отчёте написано.
Модуль «Рекомендации администратору» не знает, какой конкретно модуль или оформительская тема требует отсутствующее в денормализованной таблице свойство товара.

Поделиться темой: