Как включить динамический блок на страницу продукта с полным кэшированием страниц?

Мы хотели бы добавить динамический блок на страницу продукта. Проблема в том, что страница продукта имеет полное кэширование страниц (и мы не можем отключить его из-за проблем со скоростью). Мы хотим, чтобы на каждой странице продукта отображалась разная информация, основанная на учетной записи пользователя, вошедшего в систему, и она варьируется от продукта к продукту.

Я создал отдельный блок, который имеет свое собственное кэширование, но при этом отображается тот же блок, что и на предыдущей странице продукта. Я пытаюсь изменить метод кэширования, чтобы он не сохранял кэш с предыдущей страницы продукта.

Это работает первые несколько раз, когда я захожу на страницы продукта, но затем внезапно начинает отображаться страница с ошибкой 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.

Является ли приведенный выше синтаксис неправильным или существует более простой способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос