計画
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になるのはなぜですか?
注文後に商品名を変更しても注文の名前は変更されないことがわかりました。そのため、注文オブジェクトには、ライブカタログ(おそらく)とは別に、注文された商品に関する独自のデータがあるようです。理にかなっています:その情報は静的で変更できないようにする必要があります)。
また、データベースのスペースが無駄になるため、注文するたびにアイテムの長い説明や短い説明を保存しようとしないことも理にかなっています。しかし、なぜ空白のままにするために説明フィールドを含めるのですか?
カタログ/製品モデルをロードし、必要な製品と属性を見つけるためにその情報を取得する唯一の方法はありますか(ここのように)?