1

http://www.webspeaks.in/2011/06/customize-new-order-email-template-in.html およびhttp://www.magentocommerce.com/boards/viewthread/43928/に基づいてカスタムを作成しましたメール テンプレート。

しかし、何時間も経っても、アイテムのカスタム オプションをメールに表示する方法がわかりません。

デフォルトの電子メール コード (\app\design\frontend\base\default\template\email\order\items\order\default.phtml にあります) には、次の行があります。

    <?php if ($this->getItemOptions()): ?>
    <dl style="margin:0; padding:0;">
        <?php foreach ($this->getItemOptions() as $option): ?>
        <dt><strong><em><small><?php echo $option['label'] ?></small></em></strong></dt>
        <dd style="margin:0; padding:0 0 0 9px;">
            <?php echo (isset($option['print_value']) ? $option['print_value'] : nl2br($this->escapeHtml($option['value']))) ?>
        </dd>
        <?php endforeach; ?>
    </dl>
    <?php endif; ?>

しかし、私の .phtml dos でそのコードを使用しても何も表示されません。

これが私のコードです:

<?php $_order = $this->getOrder() ?>
<?php $i=0; foreach ($_order->getAllItems() as $_item): ?><?php if($_item->getParentItem()) continue; else $i++; ?>
<?php echo $this->__('(') ?><?php echo $_item->getQtyOrdered()*1 ?><?php echo $this->__(') ') ?>
<strong><?php echo $this->htmlEscape($_item->getName()) ?></strong>
<?php echo $this->__('$') ?><?php echo number_format($_item->getRowTotal(), 2) ?>
<br />
    <?php if ($this->getItemOptions()): ?>
        <?php foreach ($this->getItemOptions() as $option): ?>
        <strong><em><small><?php echo $option['label'] ?></small></em></strong>
            <?php echo (isset($option['print_value']) ? $option['print_value'] : nl2br($this->escapeHtml($option['value']))) ?>
        <?php endforeach; ?>
    <?php endif; ?>
<?php echo $this->__("-------------------") ?>
<br />
<?php endforeach; ?>
<br />
<?php echo $this->__('Subtotal: $') ?><?php echo number_format($_order->getSubtotal(), 2) ?>
<br />
<?php echo $this->__('Tax: $') ?><?php echo number_format($_order->getTaxAmount(), 2) ?>
<br />
<strong><?php echo $this->__('Grand Total: $') ?><?php echo number_format($_order->getGrandTotal(), 2) ?></strong>

$_item->getItemOptions()) を使用してみましたが、役に立ちませんでした。

誰かが正しい構文を手伝ってくれると本当にありがたいです(それが私が見逃しているすべてであることを願っています)。

ありがとうございました。

4

2 に答える 2

1

多くの調査の後、私は解決策を発見しました。

私のファイルではアクセスできない関数 getItemOptions() を使用した元のコードからの上記のスニペット。そこで、 getProductOption() 関数を使用するhereを見ることができるように、その関数の場所を見つけました。これが私の最終的なコードです:

    <?php if ($options = $_item->getProductOptions()): ?>
    <?php if (isset($options['options'])): ?>
    <?php foreach ($options['options'] as $option): ?>
    <br /><strong><em><small><?php echo $option['label'] ?></small></em></strong>
        <br /><?php echo (isset($option['print_value']) ? $option['print_value'] : nl2br($this->escapeHtml($option['value']))) ?>
    <?php endforeach; ?>
    <?php endif; ?>
<?php endif; ?>

少し説明すると: getProductOptions() には 2 つの配列["info_buyRequest"]["options"]. 内["options"]には: ["label"], ["value"], ["print_value"], ["option_id"], ["option_type"], ["option_value"] and ["custom_view"]. この情報は によって取得されましたvar_dump($options)

これが私と同じ問題を抱えている人に役立つことを願っています。

于 2012-12-26T15:37:09.090 に答える