0

Magento が呼び出す場合:

{{layout handle="sales_email_order_items" order=$order}}

電子メール テンプレート内で、「order=$order」ビットは単なる引数ペアですか? $order オブジェクト全体を $this->getOrder() として phtml テンプレート ファイルに渡していますか?

ある時点でこれに対する答えを知っていたことは知っていますが、それ以来忘れてしまいました。=(

4

1 に答える 1

0

それは、特定のディレクティブの実装に完全に依存します。あなたの例では、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 を想定しています。

于 2012-09-20T21:42:35.090 に答える