4

計画

Magentoのメールテンプレートを変更して長い説明を含めるには

Magentoバージョン

1.6.2.0

編集中のファイル

app/design/frontend/default/<template name>/template/email/order/items/order/default.phtml

行番号を含むこのファイルの対象コード:

31 <strong style="font-size:11px;"><?php echo $this->htmlEscape($_item->getName()) ?></strong>
46 <?php echo $this->escapeHtml($_item->getDescription()) ?>

問題

$ _item-> getName()は機能しますが、$ _ item-> getDescription()はnullを返します

デバッグ

$ _itemのZendダンプ(定義された「name」、nullとしての「description」を表示):

array(79) {
["item_id"] => string(3) "584"
["order_id"] => string(3) "398"
["parent_item_id"] => NULL
["quote_item_id"] => string(4) "1951"
["store_id"] => string(1) "1"
["created_at"] => string(19) "2012-06-04 14:15:39"
["updated_at"] => string(19) "2012-06-04 14:16:18"
["product_id"] => string(3) "156"
["product_type"] => string(6) "simple"
["product_options"] => string(140) "a:1:{s:15:"info_buyRequest";a:3:{s:4:"uenc";s:48:"aHR0cDovL2Rldi5hcHBvZ2VlLmNvbS9iYXNlL21hYy5odG1s";s:7:"product";s:3:"156";s:3:"qty";i:1;}}"
["weight"] => string(6) "0.0100"
["is_virtual"] => string(1) "0"
["sku"] => string(9) "MC969LL/A"
["name"] => string(21) "11" MacBook Air 128GB"
["description"] => NULL
["applied_rule_ids"] => NULL
["additional_data"] => NULL
["free_shipping"] => string(1) "0"
["is_qty_decimal"] => string(1) "0"
["no_discount"] => string(1) "0"
["qty_backordered"] => NULL
["qty_canceled"] => string(6) "0.0000"
["qty_invoiced"] => string(6) "0.0000"
["qty_ordered"] => string(6) "1.0000"
["qty_refunded"] => string(6) "0.0000"
["qty_shipped"] => string(6) "1.0000"
["base_cost"] => NULL
["price"] => string(9) "1199.0000"
["base_price"] => string(9) "1199.0000"
["original_price"] => string(9) "1199.0000"
["base_original_price"] => string(9) "1199.0000"
["tax_percent"] => string(6) "7.0000"
["tax_amount"] => string(7) "83.9300"
["base_tax_amount"] => string(7) "83.9300"
["tax_invoiced"] => string(6) "0.0000"
["base_tax_invoiced"] => string(6) "0.0000"
["discount_percent"] => string(6) "0.0000"
["discount_amount"] => string(6) "0.0000"
["base_discount_amount"] => string(6) "0.0000"
["discount_invoiced"] => string(6) "0.0000"
["base_discount_invoiced"] => string(6) "0.0000"
["amount_refunded"] => string(6) "0.0000"
["base_amount_refunded"] => string(6) "0.0000"
["row_total"] => string(9) "1199.0000"
["base_row_total"] => string(9) "1199.0000"
["row_invoiced"] => string(6) "0.0000"
["base_row_invoiced"] => string(6) "0.0000"
["row_weight"] => string(6) "0.0100"
["base_tax_before_discount"] => NULL
["tax_before_discount"] => NULL
["ext_order_item_id"] => NULL
["locked_do_invoice"] => NULL
["locked_do_ship"] => NULL
["price_incl_tax"] => string(9) "1282.9300"
["base_price_incl_tax"] => string(9) "1282.9300"
["row_total_incl_tax"] => string(9) "1282.9300"
["base_row_total_incl_tax"] => string(9) "1282.9300"
["hidden_tax_amount"] => NULL
["base_hidden_tax_amount"] => NULL
["hidden_tax_invoiced"] => NULL
["base_hidden_tax_invoiced"] => NULL
["hidden_tax_refunded"] => NULL
["base_hidden_tax_refunded"] => NULL
["is_nominal"] => string(1) "0"
["tax_canceled"] => NULL
["hidden_tax_canceled"] => NULL
["tax_refunded"] => NULL
["gift_message_id"] => NULL
["gift_message_available"] => string(1) "0"
["base_weee_tax_applied_amount"] => string(6) "0.0000"
["base_weee_tax_applied_row_amnt"] => string(6) "0.0000"
["base_weee_tax_applied_row_amount"] => string(6) "0.0000"
["weee_tax_applied_amount"] => string(6) "0.0000"
["weee_tax_applied_row_amount"] => string(6) "0.0000"
["weee_tax_applied"] => string(6) "a:0:{}"
["weee_tax_disposition"] => string(6) "0.0000"
["weee_tax_row_disposition"] => string(6) "0.0000"
["base_weee_tax_disposition"] => string(6) "0.0000"
["base_weee_tax_row_disposition"] => string(6) "0.0000"
}

質問

ここで説明がnullになるのはなぜですか?

注文後に商品名を変更しても注文の名前は変更されないことがわかりました。そのため、注文オブジェクトには、ライブカタログ(おそらく)とは別に、注文された商品に関する独自のデータがあるようです。理にかなっています:その情報は静的で変更できないようにする必要があります)。

また、データベースのスペースが無駄になるため、注文するたびにアイテムの長い説明や短い説明を保存しようとしないことも理にかなっています。しかし、なぜ空白のままにするために説明フィールドを含めるのですか?

カタログ/製品モデルをロードし、必要な製品と属性を見つけるためにその情報を取得する唯一の方法はありますか(ここのように)?

4

1 に答える 1

4

あなたはすべてにおいて正しいです。descriptionなぜフィールドが含まれていたのかわかりませんが、25万件の注文すべてで空になっています。

次の方法で説明を取得できます。

$_description = Mage::getModel('catalog/product')
    ->load($_item->getProductId())
    ->getDescription();

nullこれは、製品が削除された場合と同様に、うまく戻る可能性があります。

于 2012-06-05T16:53:44.763 に答える