如何打孔Magento的产品相关清单块?

时间:2012-10-22 04:45:19

标签: magento

我管理创建一个自定义块,显示随机数据,如霜和字母/数字

然而,这是了解在Magento中创建块的过程的测试。

然后我尝试从该块切换,创建了另一个块,而不是从Mage_Core_Block_Template扩展到我改为使用Enterprise_TargetRule_Block_Catalog_Product_List_Related,因为我的目标是让相关产品变得动态,我指出了{ {1}}到这个新区块。

我在相关列表块类中放置了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

1 个答案:

答案 0 :(得分:0)

您是否需要延长Enterprise_TargetRule_Block_Catalog_Product_List_Related

如果是:你明白这个块包含自己的逻辑吗?您必须在注册表中加载产品(@see Enterprise_TargetRule_Block_Catalog_Product_List_Abstract::getProduct(),就像在产品页面上一样),并在此产品上提供产品链接(类型相关)。

如果你想创建一个完全独立的产品列表:像Mage_Catalog_BLock_Product_List这样的简单类就足够了,因为它是产品列表中最新的块(没有添加特定的逻辑)

或更好..用户小部件