diff --git a/vendor/magento/module-target-rule/Block/Product/AbstractProduct.php b/vendor/magento/module-target-rule/Block/Product/AbstractProduct.php index 594b90a2033..ff66ec9b4f3 100644 --- a/vendor/magento/module-target-rule/Block/Product/AbstractProduct.php +++ b/vendor/magento/module-target-rule/Block/Product/AbstractProduct.php @@ -14,8 +14,6 @@ use Magento\TargetRule\Model\Source\Rotation; abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractProduct { /** - * Link collection - * * @var null|\Magento\Catalog\Model\ResourceModel\Product\Collection */ protected $_linkCollection = null; @@ -65,8 +63,6 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr abstract public function getPositionBehavior(); /** - * Target rule data - * * @var \Magento\TargetRule\Helper\Data */ protected $_targetRuleData = null; @@ -175,11 +171,29 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr } } if ($this->isShuffled()) { - shuffle($items); + $items = $this->shuffle($items); } return $items; } + /** + * Shuffle items preserving the key as item id + * + * @param array $items + * @return array + */ + private function shuffle(array $items): array + { + $ids = array_keys($items); + shuffle($ids); + $result = []; + foreach ($ids as $id) { + $result[$id] = $items[$id]; + } + + return $result; + } + /** * Whether rotation mode is set to "weighted random" or "random" *