2012-05-15 41 views
2

我想調用自定義的屬性,在模板文件Magento:在電子郵件模板中調用屬性?

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

稱爲subtitle我已經試過

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

,但至今沒有運氣。任何人都願意提供幫助,現在我幾個小時都在嘗試幾件事情。 :(

+0

如果您爲'catalog_product'實體創建了自定義屬性,那麼' - > getData('subtitle')'(注意getData中的'D')或' - > getSubtitle()'應該可以工作。 –

+0

非常感謝您的回覆!開始認爲我是獨立的。我使用最初發布的代碼得到的錯誤如下'致命錯誤:調用非成員函數上的成員函數getId()'。當我說自定義屬性時,它是我在magento後端創建的屬性。所以我不確定你的意思是'如果你爲catalog_product實體創建了自定義屬性' –

+0

只是爲了確保:你正在談論自定義_attributes_('Catalog - > Attributes - > Manage Attributes - > Add New Attribute' ),但不是關於自定義_variables_('System - > Custom Variables'),對吧? –

回答

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,但是一個faik此塊在默認情況下沒有任何getProduct()方法。

所以,要麼你錯過了,沒有這樣的方法,或者你已經定義了你自己的方法,並且它不返回一個Mage_Catalog_Model_Product實例(無論什麼原因)。

編輯:解決這一問題將是你的模板的第一線,從

<?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() 

以獲取您的自定義屬性的值。

+0

感謝您的支持。我還沒有定義我自己的方法。有沒有什麼辦法可以在這個區塊內獲得我想要的數據?你將不得不原諒我,我仍然不擅長使用類和麪向對象的PHP。 –

+0

不用擔心^^更新了我的回答。 –

+0

感謝您的編輯。這固定了一切:) –

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; 
    } 
} 
0

如果您正在使用MultiStore的 Magento的設置找到你的屬性和屬性值是不同的每瘡,你可以使用以下。

首先,通過電子郵件/訂單/商品/訂單/默認加載產品。PHTML:

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

要獲得屬性的 「字幕」 值,使用:

$_product->getSubtitle(); 

如果你想要得到的屬性標籤:

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

如果F.E.你的屬性是一個下拉式,來獲取值使用此:

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

在測試了Magento的CE 1.6.2.0。