0

我想为 list.phtml 上的每个产品打印一些附加数据,这些数据将取决于产品。例如,为每个产品打印带有 New 和 Sale 标签的 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 并将覆盖核心块。

我对magento很陌生,也许我缺少一些基本概念?

4

1 回答 1

0

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

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

于 2013-02-16T11:31:26.900 回答