Оскільки це був EE, я зміг використовувати підтримку Magento, але я також розробив самостійно, щоб допомогти зосередити проблему і якнайшвидше отримати рішення. Зміни коду були надані Magento, тому їх застосування до власних файлів програми / коду / основної програми чудово, хоча ви завжди могли дублювати файли у вашому / app / code / local та застосувати зміни до них.
Проблема полягала в тому, що метод кешування блоків, доданий у 1.14.2, не генерував унікальний ключ кешу, тому коли у мене було використано кілька блоків у просторі контролера категорії, згенерований ключ кешу виявився унікальним лише для звернення на першу сторінку, в результаті на всіх цих сторінках відображається повторюваний вміст.
Виправлення полягало в тому, щоб додати наступне (відображається у файлі різного формату, щоб показати контекст, що оточує доповнення - просто додайте у рядках з позначкою +, куди потрібно йти):
У додатку / код / core / Mage / Cms / Block / Block.php у рядку 72:
}
return $html;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result = array(
+ $blockId,
+ Mage::app()->getStore()->getCode(),
+ );
+ } else {
+ $result = parent::getCacheKeyInfo();
+ }
+ return $result;
+ }
}
У додатку / код / core / Mage / Cms / Block / Widget / Block.php у рядку 82:
$helper = Mage::helper('cms');
$processor = $helper->getBlockTemplateProcessor();
$this->setText($processor->filter($block->getContent()));
+ $this->addModelTags($block);
}
}
unset(self::$_widgetUsageMap[$blockHash]);
return $this;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $result = parent::getCacheKeyInfo();
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result[] = $blockId;
+ }
+ return $result;
+ }
}
Я б не думав, що я єдиний, хто бачить цю проблему, і якщо вона з'явиться в CE 1.9.2, сподіваємось, це допоможе вирішити її для деяких людей.