2

subtitleテンプレートファイルで呼び出されたカスタム属性を呼び出そうとしています

app / design / frontend / base / default / template / email / order / items / order / default.phtml

私が試してみました

Mage::getModel('catalog/product')->load($this->getProduct()->getId())->getdata('subtitle')

しかし、今のところ運がありません。誰かが喜んで手伝ってくれるだろうか、私は今何時間もいくつかのことを試みてきました。:(

4

3 に答える 3

2

$this->getProduct()あなたのコードは、がオブジェクトを返すことを前提としていMage_Catalog_Model_Productます。

エラーFatal error: Call to a member function getId() on a non-objectは、$this->getProduct()実際にはオブジェクトを返さないことを示しています(おそらくnull代わりに)。

テンプレート

app/design/frontend/base/default/template/email/order/items/order/default.phtml

あなたが話しているのは、に含まれていますが、このブロックにはデフォルトでメソッドMage_Sales_Block_Order_Email_Items_Order_Defaultがありません。getProduct()

したがって、欠落している、そのようなメソッドがない、または独自のメソッドを定義していて、Mage_Catalog_Model_Productインスタンスを返さない(何らかの理由で)。

編集

これを修正する1つの方法は、テンプレートの最初の行をから変更することです。

<?php $_item = $this->getItem() ?>
<?php $_order = $this->getItem()->getOrder() ?>

<?php $_item = $this->getItem() ?>
<?php $_product = Mage::getModel('catalog/product')->load($_item->getProductId()) ?>
<?php $_order = $this->getItem()->getOrder() ?>

この変更後、次を使用できます

$_product->getSubtitle()

カスタム属性の値を取得します。

于 2012-05-15T16:00:58.793 に答える
0

テンプレート内の変数を実行var_dump()またはデバッグします。$_item変数のどこかにある種の製品オブジェクトがあり$_item、そのIDを見つけることができる可能性が高いと思います。(たぶん?に似たものでも$productId = $_item->getProduct()->getId())製品IDを見つけたら、このコードを介して属性を確実に見つけることができます

// $productId = Whatever product ID was found previously
if ($productId) {
    $subtitle = Mage::getModel('catalog/product')->load($productId)->getSubtitle();
    if ($subtitle) {
        echo 'This is the subtitle ' . $subtitle;
    }
}
于 2012-05-15T16:17:48.317 に答える
0

マルチストアMagentoセットアップを使用していて、属性値が痛みごとに異なる場合は、次を使用できます。

まず、email / order / items / order/default.phtmlに製品をロードします。

$_product = Mage::getModel('catalog/product')->setStoreId($_order->getStoreId())->load($_item->getProductId());

属性の「サブタイトル」値を取得するには、次を使用します。

$_product->getSubtitle();

属性ラベルを取得する場合:

$_product->getResource()->getAttribute('subtitle')->getStoreLabel($_order->getStoreId());

また、属性がドロップダウンタイプの場合、値を取得するには次を使用します。

$_product->getResource()->getAttribute('dropdown_attribute')->getFrontend()->getValue($_product);

MagentoCE1.6.2.0でテスト済み。

于 2014-01-17T18:19:25.500 に答える