Мы хотим добавить динамический блок на страницу продукта. Проблема в том, что на странице продукта есть полное кеширование страницы (и мы не можем отключить его из-за проблем со скоростью). Мы хотим отображать различную информацию на каждой странице продукта в зависимости от учетной записи пользователя, вошедшего в систему, и она варьируется от продукта к продукту.
Я создал отдельный блок, у которого есть собственное кэширование, но он отображает тот же блок, что и на предыдущей странице продукта. Я пытаюсь изменить его метод кеширования, чтобы он не сохранял кеш с предыдущей страницы продукта.
Первые несколько раз, когда я перехожу на страницу продукта, он работает, но затем внезапно начинает отображать страницу с ошибкой Magento, на которой написано: «На веб-сайте произошла ошибка при получении http://www.mycompany.com/productpage .html .
Возможно, он не работает для обслуживания или настроен неправильно ".
Вот что я сделал до сих пор.
Я создал
app / code / local / MyCompany / MyModule / PageCache / etc / config.xml
, чтобы добавить MyCompany_PageCache_Model.Затем я создал файл, который управляет кешированием в
app / code / local / MyCompany / MyModule / PageCache / Model / Container / MyFile.php
со следующими функциями:
protected function _getCacheId()
{
return 'CONSTANT_CACHE' . md5($this->_placeholder->getAttribute('cache_id'));
}
protected function _saveCache($data, $id, $tags = array(), $lifetime = null)
{
return false;
}
protected function _renderBlock()
{
$blockClass = $this->_placeholder->getAttribute('block');
$template = $this->_placeholder->getAttribute('template');
$block = new $blockClass;
$block->setTemplate($template);
$block->setLayout(Mage::app()->getLayout());
return $block->toHtml();
}
Я также создал cache.xml в Каталог / и т.д. с моим заполнителем для CONSTANT_CACHE.
Синтаксис выше неверен или есть более простой способ сделать это?