Magento が呼び出す場合:
{{layout handle="sales_email_order_items" order=$order}}
電子メール テンプレート内で、「order=$order」ビットは単なる引数ペアですか? $order オブジェクト全体を $this->getOrder() として phtml テンプレート ファイルに渡していますか?
ある時点でこれに対する答えを知っていたことは知っていますが、それ以来忘れてしまいました。=(
Magento が呼び出す場合:
{{layout handle="sales_email_order_items" order=$order}}
電子メール テンプレート内で、「order=$order」ビットは単なる引数ペアですか? $order オブジェクト全体を $this->getOrder() として phtml テンプレート ファイルに渡していますか?
ある時点でこれに対する答えを知っていたことは知っていますが、それ以来忘れてしまいました。=(
それは、特定のディレクティブの実装に完全に依存します。あなたの例では、layout
ディレクティブはで処理されます
#File: app/code/core/Mage/Core/Model/Email/Template/Filter.php
public function layoutDirective($construction)
{
...
}
$construction パラメータには、テンプレート タグの属性のリストが含まれています。これらはパラメータに解析されます
$params = $this->_getIncludeParameters($construction[2]);
新しいレイアウト オブジェクトがインスタンス化されます
$layout = Mage::getModel('core/layout');
次に、新しいレイアウト オブジェクトの各ブロックに対して、各パラメーターがデータ パラメーターとして割り当てられます。
foreach ($layout->getAllBlocks() as $blockName => $block) {
/* @var $block Mage_Core_Block_Abstract */
foreach ($params as $k => $v) {
if (in_array($k, $skipParams)) {
continue;
}
$block->setDataUsingMethod($k, $v);
}
}
上記は Magento 1.7.x を想定しています。