Magento在list.phtml中调用特定产品的块

时间:2013-02-16 09:42:49

标签: magento php

我想在list.phtml上为每个产品打印一些取决于产品的额外数据。例如,为每个产品打印带有新标签和销售标签的html(这只是一个示例)。我想以某种方式将.phtml文件中的逻辑分开并保留在phtml中只是为它调用。实现它的最佳方法是什么?另外,我想最小化覆盖核心文件并使其更加独立。 我的想法是:

  1. 创建我自己的块,在.phtml中创建并调用它并传递给我 产品与setData:

    $this->getLayout()->createBlock("namespace/block")->
    setTemplate("path/to/template")->setData('product', $_product)
    

    然后在我的块.php文件中调用getProduct()。但由于某些原因不起作用。

  2. 对我来说最好看的解决方案,但不确定是否允许。在布局文件中创建新块并使用getChildHtml('block_name')进行调用。但我不知道如何传递当前的产品或如何使它能够通过我的.php文件中的$ this访问。

  3. 覆盖产品块并添加我自己的方法,如getRibbons()。对我来说最糟糕的解决方案,因为这将要求.php块中的html写入并将覆盖核心块。

  4. 我对magento很新,也许我错过了一些基本概念?

1 个答案:

答案 0 :(得分:0)

扩展您的Product Block PHP并添加您想要的新方法。然后在您引用核心产品块的module.xml中,将其替换为新创建的块。

现在,从PHTML文件中,您可以使用$this轻松调用PHP块的方法