我想在list.phtml上为每个产品打印一些取决于产品的额外数据。例如,为每个产品打印带有新标签和销售标签的html(这只是一个示例)。我想以某种方式将.phtml文件中的逻辑分开并保留在phtml中只是为它调用。实现它的最佳方法是什么?另外,我想最小化覆盖核心文件并使其更加独立。 我的想法是:
创建我自己的块,在.phtml中创建并调用它并传递给我 产品与setData:
$this->getLayout()->createBlock("namespace/block")->
setTemplate("path/to/template")->setData('product', $_product)
然后在我的块.php文件中调用getProduct()。但由于某些原因不起作用。
对我来说最好看的解决方案,但不确定是否允许。在布局文件中创建新块并使用getChildHtml('block_name')
进行调用。但我不知道如何传递当前的产品或如何使它能够通过我的.php文件中的$ this访问。
覆盖产品块并添加我自己的方法,如getRibbons()。对我来说最糟糕的解决方案,因为这将要求.php块中的html写入并将覆盖核心块。
我对magento很新,也许我错过了一些基本概念?
答案 0 :(得分:0)
扩展您的Product Block PHP并添加您想要的新方法。然后在您引用核心产品块的module.xml
中,将其替换为新创建的块。
现在,从PHTML文件中,您可以使用$this
轻松调用PHP块的方法