2012-10-22 69 views
1

我管理創建一個自定義塊,它顯示隨機數據,如霜和字母/數字如何在Magento中打孔產品相關列表的塊?

但是,這是測試瞭解在Magento中創建塊的過程。

然後我試圖從該塊切換,創造了另一個塊,而不是從Mage_Core_Block_Template延長,我更改爲使用Enterprise_TargetRule_Block_Catalog_Product_List_Related,因爲我的目標是有相關的產品是動態的,我指着我的cache.xml這個新塊。

我在相關的列表框類放在Mage::log知道什麼時候這就是所謂的,我可以看到它被調用一次,然後被緩存。

對於我的生活,我不能讓它工作,這是我的代碼,請指教。

注:重寫還有另一個獨立的目的,並且實際上我的日誌行代碼在該部分之下方法設置:public function getProductIds($object)

Lg/Hole/etc/config.xml

<config> 
    <modules> 
     <Lg_Hole> 
      <version>0.0.1</version> 
     </Lg_Hole> 
    </modules> 

    <global> 
     <blocks> 
      <lg_hole> 
       <class>Lg_Hole_Block</class> 
      </lg_hole> 
     </blocks> 
     <models> 
      <lg_hole> 
       <class>Lg_Hole_Model</class> 
      </lg_hole> 
      <enterprise_targetrule_resource> 
       <rewrite> 
        <index>Lg_Hole_Model_Mymodel</index> 
       </rewrite> 
      </enterprise_targetrule_resource> 
     </models> 
    </global> 
</config> 

Lg/Hole/etc/cache.xml

<config> 
    <placeholders> 
     <lg_hole> 
      <block>lg_hole/related</block> 
      <name>hole_view_example</name> 
      <placeholder>CACHE_TEST</placeholder> 
      <container>Lg_Hole_Model_Cachetest</container> 
      <cache_lifetime>86400</cache_lifetime> 
     </lg_hole> 
    </placeholders> 
</config> 

Lg/Hole/Model/Cachetest.php

class Lg_Hole_Model_Cachetest extends 
Enterprise_PageCache_Model_Container_Abstract { 
protected function _getCacheId() 
{ 
    return 'HOMEPAGE_PRODUCTS' . 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; 
} 

public function applyWithoutApp(&$content) 
{ 
    return false; 
} 
} 

Lg/Hole/Block/Related.php

class Lg_Hole_Block_Related extends Enterprise_TargetRule_Block_Catalog_Product_List_Related 
{ 

} 

回答

0

你有任何需要從Enterprise_TargetRule_Block_Catalog_Product_List_Related延伸?

如果是的話:你知道這塊包含它自己的邏輯?您必須在註冊表(@see Enterprise_TargetRule_Block_Catalog_Product_List_Abstract::getProduct()就像一個產品頁面上)加載的產品,並擁有該產品的產品鏈接(類型有關)。

如果你想建立一個完全獨立的產品列表:像Mage_Catalog_BLock_Product_List一個簡單的類就足夠了,因爲它是從產品列表最原始塊(無特定邏輯加)

或破越好..用戶控件

+0

謝謝回答,其實這是一個商品詳細頁上正常的相關列表,所以不是真的想另起爐竈,我只是長時間思考它可能是更容易地在自己的模塊中的打孔的塊,而不是衝一個指向核心/企業文件的漏洞,如果不需要擴展我明白,我只需要這個正常的「相關項目塊」在任何時候都不在緩存中。 在理解這個塊的問候包含它自己的邏輯,是我做的其實和必須實現對項目的一些條件,我的工作(這使我需要它的緩存) –

+0

好吧,如果你真的需要把它從緩存中'_saveCache()'你的容器的方法應該工作 –

+0

你嘗試不FPC激活一個簡單的'返回FALSE'了嗎?你確定你的街區沒有它嗎? –

相關問題