getChildHtml()呼び出しにデータを渡すことができます。その理由は、ブロックの出力は製品タイプに依存しているからです。したがって、出力を決定できるように、製品をgetChildHtmlに渡します。
私はこれを内部で行っていtemplate/checkout/cart/item/default.phtml
ます。
理想的には、呼び出しは次のようになります。
echo $this->getChildHtml('child_block_name', $_item);
次に、ブロックはアイテムから製品タイプを取得し、正しい出力を表示できます。
このデータを渡すことは絶対に不可能であるgetChildHtml
ため、コアブロックを書き換えずにこのタイプの動作をどのように実現できるか
私が現在持っている2つのソリューションは次のとおりです(どちらも非常に魅力的ではありません):
1-ヘルパーを作成し、ブロックとテンプレートにalaをレンダリングさせる代わりに、ヘルパーを介してhtml出力にアクセスします $this->helper('my_module')->getItemHtml($_item);
2-子ブロックにアクセスし、テンプレート内のその上でsetData:
$this->getChild('child_name')->setData('item', $_item);
echo $this->getChildHtml('child_name')
Magentoアーキテクチャに関しては、2番は2つの悪のうち小さいほうだと思いますが、テンプレートの内部は見苦しいです。