Impossibile recuperare isolato dal layout quando la cache pagina intera è abilitato

magento.stackexchange https://magento.stackexchange.com/questions/14130

  •  16-10-2019
  •  | 
  •  

Domanda

Il problema è che non posso recuperare qualsiasi blocco dal layout o il blocco bambino da mio blocco nella cache quando la cache piena pagina è attivata. Ho prossimi file: 1) cache.xml

<config>
<placeholders>
    <socialfeed_posts>
        <block>onepica_socialfeed/country_story</block>
        <name>country_story</name>
        <placeholder>SOCIAL_COUNTRY_STORY</placeholder>
        <container>OnePica_SocialFeed_Model_Cache_Container_Country_Story</container>
        <cache_life>0</cache_life>
    </socialfeed_posts>
</placeholders>
</config>

2) OnePica_SocialFeed_Model_Cache_Container_Country_Story.php

class OnePica_SocialFeed_Model_Cache_Container_Country_Story extendsEnterprise_PageCache_Model_Container_Abstract
{
protected function _renderBlock()
{
    $blockClass = $this->_placeholder->getAttribute('block');
    $template = $this->_placeholder->getAttribute('template');
    /* @var $block OnePica_SocialFeed_Block_Country_Story */
    /*$block = new $blockClass;
    $block->setTemplate($template);
    $layout = Mage::app()->getLayout();
    $block->setLayout($layout);
    return $block->toHtml();
}
}

3) OnePica_SocialFeed_Block_Country_Story.php

class OnePica_SocialFeed_Block_Country_Story extends Mage_Core_Block_Template 
{
...
public function getPager()
{
    if (null === $this->_pager) {
        $this->_pager = $this->getLayout()->getBlock('social_feed_pager');
    }
    return $this;
}
...
}

4) layout.xml

<reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
        <block type="onepica_socialfeed/html_pager" name="social_feed_pager" template="onepica/socialfeed/page/html/pager.phtml" />
<!-- Tried as a simple block of layout-->
    </reference>
    <reference name="content">
        <block type="onepica_socialfeed/country_story" name="country_story" as="country_story" template="onepica/socialfeed/country/story.phtml" >
            <block type="onepica_socialfeed/html_pager" name="social_feed_pager" template="onepica/socialfeed/page/html/pager.phtml" />
    <!-- Tried as a CHILD block of my cached block-->
        </block>
</reference>

Quando il caricamento della pagina in un primo momento tutto sia giusto, ma quando ho provato ricaricare la pagina seconda volta, la pagina viene crached, a causa di $ this-> getLayout () -> getBlock ( 'social_feed_pager') di fila . Non voglio creare block 'social_feed_pager' nel mio blocco utilizzando $ this-> getLayout () -> createBlock ( 'social_feed_pager'). Ho bisogno recuperare isolato dal layout.

Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

È stato utile?

Soluzione

Sembra che il tuo problema è che cache_lifetime del blocco è impostato su '0'. Ciò significa che il blocco non è la cache a tutti e le sue piste di codice nel corso di ogni ricarica, ma tutti gli altri blocchi sono nella cache in modo non è possibile ottenere loro come getLayout()->getBlock('any_block'). Prova a impostare

<cache_lifetime>86400</cache_lifetime>

Dopo cancellare tutta la cache.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top