Проблема с кэшем списков подкатегорий Magento 1.9.3.6


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

Однако после посещения первой страницы категории на ней отображаются подкатегории этой страницы категории для всех последующих страниц категорий.

Исследуя проблему, я обнаружил, что она вызвана кэшем: Блокирует вывод HTML. И, исследуя проблему, которую я вижу в предыдущих версиях, magento не кэширует динамические статические блоки правильно.

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

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

Обновление:

Вот мой код, если это поможет:

phtml-файл файл:

    <div class="category-products2">
<ul class="products-grid subGrid">
<?php
$_categories=$this->getCurrentChildCategories();
if($_categories->count()):
$categorycount = 0;
foreach ($_categories as $_category):
if($_category->getIsActive()):
$cur_category=Mage::getModel('catalog/category')->load($_category->getId());
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_category);
$catName = $this->getCurrentCategory()->getName();
if ($categorycount == 0){
$class = "first";
}
elseif ($categorycount == 3){
$class = "last";
}
else{
$class = "";
}
?>
<li class="item <?=$class?> dropshadowclass">
<a class="product-image" href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><img src="<?php echo $_category->getImageUrl() ?>" width="100%" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" /></a>

<h2 class="subImageCat"><a href="<?php echo $_category->getURL() ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>"><?php echo $this->htmlEscape($_category->getName()) ?></a></h2>
</li>
<?php
endif;
if($categorycount == 3){
$categorycount = 0;
echo "</ul>\n\n<ul class=\"products-grid subGrid\">";
}
else{
$categorycount++;
}
endforeach;
endif;
?>
</ul>
</div>

Обновлена функция getCurrentChildCategories():

    public function getCurrentChildCategories()
   {
        $layer = Mage::getSingleton('catalog/layer');
        $category   = $layer->getCurrentCategory();
        /* @var $category Mage_Catalog_Model_Category */
        $collection = Mage::getModel('catalog/category')->getCollection();
        /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
        $collection->addAttributeToSelect('url_key')
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('is_anchor')
            ->addAttributeToSelect('image') 
            ->addAttributeToFilter('is_active', 1)
            ->addIdFilter($category->getChildren())
            ->setOrder('position', 'ASC')
            ->joinUrlRewrite()
            ->load();

        $productCollection = Mage::getResourceModel('catalog/product_collection');
        $layer->prepareProductCollection($productCollection);
        $productCollection->addCountToCategories($collection);
        return $collection;
    } 

До сих пор предпринимались попытки отключить кэш для этого статического блока:

1) В local.xml под дескриптором макета по умолчанию:

    <reference name="categorysub">
     <action method="unsetData"><key>cache_lifetime</key></action>
     <action method="unsetData"><key>cache_tags</key></action>
    </reference>

И,

     <reference name="categorysub"><action method="unsCacheLifetime"></action></reference>

2) В объявлении блока:

    cache_lifetime="null"
    cache_lifetime=null
    cache_lifetime=0

Обновление 2:

Попытка ответа Rimeshs ниже устраняет проблему, но в последнее время он не был активен и хотел бы подтвердить, что он по-прежнему безопасен для производственного использования?

Author: Vaishal Patel, 2017-10-13

1 answers

Эта проблема была введена в версии 1.9.2.X для повышения производительности.

Используйте ссылку ниже, чтобы получить исправление.

Https://github.com/progammer-rkt/Rkt_SbCache

 0
Author: Renish K.R, 2017-10-21 09:37:02