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

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

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

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

Синтаксис выше неверен или есть более простой способ сделать это?

36
задан fmsthird 19 March 2019 в 09:07
поделиться