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 に答える