2014-06-16 10 views
1

작동하지 I 카탈로그/PRODUCT_PRICE 블록이 시도했지만 내가 갖는 :구멍 펀칭 젠토에

치명적인 오류 :의/var가 아닌 객체() 멤버 함수의 getCacheIdTags에 전화/www/html/app/code/core/Mage/Catalog/Block/Product/Price.php on line 176

아이디어가 있으십니까?

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
<placeholders> 
    <catalog_product_price> 
    <block>catalog/product_price</block> 
    <placeholder>TEST_CACHE</placeholder> 
    <container>Test_PageCache_Model_Container_Cache</container> 
    <cache_lifetime>0</cache_lifetime> 
    </catalog_product_price> 
</placeholders> 
</config> 

그리고 내 컨테이너

class Test_PageCache_Model_Container_Cache extends Enterprise_PageCache_Model_Container_Abstract{ 

    protected function _getCacheId() 
    { 
     return 'TEST_CACHE' . md5($this->_placeholder->getAttribute('cache_id')); 
    } 

    protected function _renderBlock() 
    { 
     $blockClass = $this->_placeholder->getAttribute('block'); 
     $template = $this->_placeholder->getAttribute('template'); 

     $block = new $blockClass; 
     $block->setTemplate($template); 

     return $block->toHtml(); 
    } 

    protected function _saveCache($data, $id, $tags = array(), $lifetime = null) { return false; }} 

나는 FPC는이를 확인하는 것이 가능했지만, 블록이 어디이 페이지를 새로 고침 할 때, 나는 aftermentioned 오류를 받고 있어요.

감사

답변

0

이 작업을 수행하여 그것을 해결 :

내 캐시 컨테이너에서 다음
public function getCacheKeyInfo() { 
    $data = parent::getCacheKeyInfo(); 

    if(Mage::registry('current_product')) 
    { 
     **$data['product'] = Mage::registry('current_product')->getId();** //can be a product id, etc. 
    } 
    return $data; 
} 

:

protected function _renderBlock() 
{ 
    try 
    { 
     $blockClass = $this->_placeholder->getAttribute('block'); 
     $template = $this->_placeholder->getAttribute('template'); 


     $block = new $blockClass; 
     $block->setTemplate($template); 
     **$block->setProductId($this->_placeholder->getAttribute('product'));** 

     return $block->toHtml(); 
    } 
    catch(Exception $ex) 
    { 
     Mage::log($ex->getMessage(), null, "system2.log"); 
    } 
}