Проблема с извлечением атрибута с определенным представлением хранилища


У меня есть 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: Представление магазина по умолчанию, без расширений.

Author: user487772, 2013-03-01

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.

 4
Author: fmrng, 2013-03-01 09:10:34