Список продуктов - Иногда отображаются дубликаты продуктов


У меня проблема, и я уже несколько часов не могу найти никакого решения.

Когда я просматриваю категорию и просматриваю страницы, иногда продукт отображается несколько раз, например, на странице 1 и странице 2 - точно такая же статья (артикул).

До сих пор я мог обнаружить это поведение с порядком сортировки: по имени. Я думаю, что проблема в том, что каждое выполнение "ЗАКАЗА ПО имени" возвращает другое подмножество продуктов, потому что многие статьи называются практически идентичными.

Но я не уверен, действительно ли это проблема.

Я деактивировал все расширения в сообществе и локальном и повторно активировал шаблон по умолчанию... проблема все еще существует (все индексы обновлены).

Надеюсь, кто-нибудь сможет помочь.

Большое спасибо

* Обновление 18.06.2013 *

Следуя SQL-запросу со Страницы 1 и Страницы 2

# Страница 1

SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS `name` FROM `catalog_product_entity` AS `e` INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='130' INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 LEFT JOIN `catalog_product_entity_varchar` AS `at_name_default` ON (`at_name_default`.`entity_id` = `e`.`entity_id`) AND (`at_name_default`.`attribute_id` = '65') AND `at_name_default`.`store_id` = 0 LEFT JOIN `catalog_product_entity_varchar` AS `at_name` ON (`at_name`.`entity_id` = `e`.`entity_id`) AND (`at_name`.`attribute_id` = '65') AND (`at_name`.`store_id` = 1) ORDER BY `name` asc LIMIT 5

Возвращающий следующее идентификатор сущности

44419

36243

36235

29435

36386 [В Интерфейсе 36330]

Статья с идентификатором сущности 36386 называется "Bugatti Herren eleganter Schnürschuh" с артикулом: 650243, который также находится в Категории. Существует 9 настраиваемых продуктов с точно таким же названием. (артикул: 640735, 650243, 650244, 650245, 650246, 650248, 650249, 650250, 650251)

Понятия не имею, почему. Продукты импортируются через сторонний интерфейс. Но может ли это быть проблемой для Magento/Разбиение на страницы с несколькими статьями с одинаковым названием?

# Страница 2

SELECT `e`.*, `cat_index`.`position` AS `cat_index_position`, `price_index`.`price`, `price_index`.`tax_class_id`, `price_index`.`final_price`, IF(price_index.tier_price IS NOT NULL, LEAST(price_index.min_price, price_index.tier_price), price_index.min_price) AS `minimal_price`, `price_index`.`min_price`, `price_index`.`max_price`, `price_index`.`tier_price`, IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS `name` FROM `catalog_product_entity` AS `e` INNER JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='130' INNER JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = '1' AND price_index.customer_group_id = 0 LEFT JOIN `catalog_product_entity_varchar` AS `at_name_default` ON (`at_name_default`.`entity_id` = `e`.`entity_id`) AND (`at_name_default`.`attribute_id` = '65') AND `at_name_default`.`store_id` = 0 LEFT JOIN `catalog_product_entity_varchar` AS `at_name` ON (`at_name`.`entity_id` = `e`.`entity_id`) AND (`at_name`.`attribute_id` = '65') AND (`at_name`.`store_id` = 1) ORDER BY `name` asc LIMIT 5 OFFSET 5

Возвращающий следующий идентификатор сущности

36330

36584

36354

28324

29175 [В Интерфейсе 29183]

Последний продукт в запросе не такой, как во внешнем интерфейсе.

* Обновление 2 18.06.2013 *

Хорошо, я выполнил SQL-инструкцию страницы 1 несколько раз, и результат отличается:

Много раз я получаю этот: 44419 36243 36235 29435 36386

Но иногда это: 44419 36235 36243 29435 36354

Если я продолжу, я думаю, что будет возможно больше комбинаций. Идентификатор, измененный в этом списке, - это продукты с точно таким же названием.

Может ли быть проблема в том, что "ЗАКАЗ ПО имени" не может получить уникальный заказ, потому что имена повторяются, поэтому порядок немного изменился? Но если проблема в этом, то любопытны две вещи.

1) Все статьи с одинаковым названием (и в этой категории и т.д.) должны перечисляться вместе, а не та или иная статья.

2) Это была бы известная проблема.

Я надеюсь, что кто-нибудь сможет объяснить это странное поведение.

Author: Prince Patel, 2013-06-17

5 answers

Если названия продуктов не совпадают, и вы сортируете только по названию, порядок продуктов с одинаковым названием не определен.

Простым решением может быть включение плоского каталога продуктов Magento в разделе

System > Config > Catalog > Frontend

После переиндексации Magento будет использовать плоскую таблицу для просмотра магазина на страницах списка продуктов на интерфейсе.
Возможно, это уже решает проблему для вас.

Если это не решит вашу проблему, попробуйте добавить другую сортировку критерии, например entity_id.

Это можно сделать с помощью наблюдателя событий для события catalog_product_collection_load_before. ($observer->getCollection()->setOrder('entity_id', 'ASC');).

После этого порядок будет определен, даже если названия продуктов совпадают.

 11
Author: Vinai, 2013-06-18 20:32:45

На самом деле артикул не является 100% гарантией уникальности продукта. Объединение баз данных или некоторые методы импорта все равно могут привести к дублированию артикулов.

Чтобы узнать, являются ли ваши продукты duppies или нет, обратитесь к идентификатору продуктов. Вы можете либо вывести идентификатор в шаблоне catalog/product/list.phtml, либо просто проверить идентификатор в URL-адресе продукта.

 2
Author: user487772, 2013-06-18 05:37:27

У меня также такая же проблема с повторяющимся продуктом на разных страницах в результатах предварительного поиска по каталогу, а также на странице просмотра категорий.

Я включил Плоский продукт каталога из Система > Конфигурация > Каталог > Интерфейс , и это решило проблему.

Спасибо за сообщение, оно очень полезно.

 1
Author: Bijal Bhavsar, 2013-07-03 05:08:10

Проверьте SQL-запрос, перейдите в list.phtml и <?php echo $productCollection->getSelect(); ?>.

В коллекции не может быть одного объекта дважды, и идентификатор проверяется. Вопрос в том, почему продукты выбираются дважды для разных страниц. И ответ может дать только sql-запрос.

 0
Author: Fabian Blechschmidt, 2013-06-18 07:34:50

Нашел решение после анализа основного magento2. Я чувствую, что это ошибка M2. Эта проблема также существует, если у вас есть сортировка по умолчанию по цене или названию.

Я использовал метод плагина Magento2 для изменения коллекции списков.

$коллекция->Порядок установки ('идентификатор сущности', 'ОПИСАНИЕ');

Используйте этот модуль - Ссылка на концентратор Git

 0
Author: Nikhil.Patil, 2017-09-08 10:16:37