Кэш Magento Enterprise, отображающий один и тот же продукт несколько раз в связанных продуктах
-
16-10-2019 - |
Вопрос
Я пытаюсь выяснить, почему на веб-сайте Magento Enterprise один и тот же элемент отображается четыре раза в разделе «Связанный элемент» на странице.
ПРАВИЛЬНОЕ ПОВЕДЕНИЕ:
- После очистки кэшей четыре разные предметы отображаются при первой загрузке страницы (это правильное поведение)
ПРОБЛЕМА:- При дополнительных загрузках страниц отображаются не только те же четыре элемента, но и точно такой же предмет повторено четыре раза (см. скриншот)
- Элемент, который повторяется, всегда является последний элемент который отображался при загрузке исходной страницы.Другими словами, если при первой загрузке страницы после очистки кэша отображаются элементы, связанные с a,b,c,d, именно «d» будет повторяться четыре раза при будущих загрузках страниц.д, д, д, д
ФОН:
- Страница использует собственную тему.
- Эта проблема возникает только тогда, когда включено полное кэширование страниц.
- Если страница возвращается к теме «по умолчанию», проблема больше не возникает, даже если включено полное кэширование страниц.
- Подведем итоги:проблема возникает только при включенной пользовательской теме и полном кэшировании страниц.
- Magento Enterprise вер.1.13.0.0
Часть страницы, посвященная сопутствующим товарам, вставляется с помощью следующего кода:
<?php echo $this->getChildHtml('relatedProducts', false) ?>
Буду признателен за:
- Конкретное указание на то, в чем может заключаться эта проблема.
- Надежные способы отключения определенного кеша, связанного с этим (в графическом интерфейсе?В коде?В терминале?)
- Тесты и шаги, которые я могу предпринять, чтобы сузить круг вопросов до кода, базы данных или файлов.
Заранее спасибо!
Решение
Оказалось, что мы создали локальную версию дефолтного связанный.phtml файл, который использовался в качестве шаблона для блока связанных элементов.В этом коде внутри цикла есть строка:
$itemBlock = $this->getChild('catalog.product.related.item')->setItem($_item)->setPosition($i);
Обратите внимание на переменную $i в конце строки.
Эта переменная не увеличивалась где-либо еще в коде.я добавил $i = 0;
перед циклом и $i++;
в соответствующем месте внутри цикла.Теперь, когда переменная $i увеличивается, проблема повторяющихся элементов решена.