Как включить динамический блок на страницу продукта с полным кэшированием страниц?
Мы хотели бы добавить динамический блок на страницу продукта. Проблема в том, что страница продукта имеет полное кэширование страниц (и мы не можем отключить его из-за проблем со скоростью). Мы хотим, чтобы на каждой странице продукта отображалась разная информация, основанная на учетной записи пользователя, вошедшего в систему, и она варьируется от продукта к продукту.
Я создал отдельный блок, который имеет свое собственное кэширование, но при этом отображается тот же блок, что и на предыдущей странице продукта. Я пытаюсь изменить метод кэширования, чтобы он не сохранял кэш с предыдущей страницы продукта.
Это работает первые несколько раз, когда я захожу на страницы продукта, но затем внезапно начинает отображаться страница с ошибкой 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 в каталоге / etc с моим заполнителем для CONSTANT_CACHE.
Является ли приведенный выше синтаксис неправильным или существует более простой способ сделать это?