Так как это была EE, я смог использовать поддержку Magento, но я также решил все самостоятельно, чтобы помочь решить проблему и найти решение как можно быстрее. Изменения кода были предоставлены Magento, поэтому применять их к фактическим файлам app / code / core - это хорошо, хотя вы всегда можете скопировать файлы в вашем / app / code / local и применить изменения там.
Проблема заключалась в том, что метод блочного кэширования, который был добавлен в 1.14.2, не генерировал уникальный ключ кэша, поэтому, когда у меня было несколько блоков, используемых в пространстве контроллера категории, сгенерированный ключ кэша оказался уникальным только для первого попадания страницы, в результате на всех этих страницах отображается дублированный контент.
Исправление состояло в том, чтобы добавить следующее (отображается в формате файла diff, чтобы показать контекст, окружающий дополнения - просто добавьте строки с +, куда они должны идти):
В app / code / 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;
+ }
}
В app / code / 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, надеюсь, это поможет решить некоторые проблемы.