Проблема с извлечением атрибута с определенным представлением хранилища
У меня есть Magento только с одним видом магазина. Однако этот магазин не является магазином по умолчанию. Было создано представление магазина новостей (ID: 2) и удалено представление по умолчанию.
Затем у меня есть продукты и изображения, импортированные с помощью какого-либо инструмента. В админе все блестит. Выбран правильный эскиз, маленькое изображение и базовое изображение, и изображение не исключается. В интерфейсе изображение отображается правильно на странице информации о продуктах, но не отображается в списке продуктов.
Если я распечатайте объект продукта в списке категорий, я вижу, что изображения даже не загружены. Вообще никаких объектов недвижимости. Однако метки изображений загружаются хорошо.
Вот пример строки моего catalog_product_entity_varchar
:
value_id entity_type_id attribute_id store_id entity_id value
--------------------------------------------------------------------------------------------
1004 4 86 2 101 /2/7/271074_2.jpg
Где 86
соответствует атрибуту small_image
.
А теперь последнее. Если я изменю идентификатор магазина на 0
, изображение будет отображаться правильно. Я могу легко установить значение 0
для всех продуктов, если у меня есть только один вид магазина, но не следует ли его также отображать с помощью 2
? Почему с 2
он отображается на странице сведений о продуктах, а не в списке?
PS: Представление магазина по умолчанию, без расширений.
1 answers
У вас есть значение по умолчанию для этого элемента или только конкретное значение для просмотра магазина?
SELECT
`t_d`.`entity_id`,
`t_d`.`attribute_id`,
`t_d`.`value` AS `default_value`,
`t_s`.`value` AS `store_value`,
IF(t_s.value_id IS NULL, t_d.value, t_s.value) AS `value`
FROM `catalog_product_entity_varchar` AS `t_d`
LEFT JOIN `catalog_product_entity_varchar` AS `t_s`
ON t_s.attribute_id = t_d.attribute_id AND t_s.entity_id = t_d.entity_id AND t_s.store_id = 2
...
Вот фрагмент из запросов, которые загружают атрибуты в списки продуктов. Как вы можете видеть, если у вас нет значения по умолчанию для этого атрибута, первая часть не вернет результатов, и ЛЕВОЕ СОЕДИНЕНИЕ не будет работать правильно. Это означает, что вам всегда нужно значение по умолчанию И значение просмотра магазина; Magento определит правильное значение в вычисляемом поле IF(...) as value
.