2011-06-03 72 views
1

我想讓我的桌子體積率,即體積龐大(但不重)項目的寬度,高度和深度。這些屬性是設置好的,我可以在我自己的Model/Flatrate.php模塊中正確讀取它們。Magento Tablerate.php - 我如何獲得屬性?

這適用於那些我自己的屬性和重量,這是一個內置的屬性測量:

if ($request->getAllItems()) 

{ foreach ($request->getAllItems() as $item) 
    Mage::log($item->getShipping_height()); 

然而,當我嘗試同樣在Tablerate.php這是行不通的,即使在覈心,而不是我自己的模塊。我沒有得到重量,身高,長度和深度。沒有這個工程,我確實得到日誌文件中的條目,但沒有標籤:

if ($request->getAllItems()) { 
     foreach ($request->getAllItems() as $item) { 
     Mage::log("Weight ".$item->getWeight."*"); 
     Mage::log("Height ".$item->getProduct()->getShipping_height()."*"); 
     Mage::log("Width ".$item->getShipping_width()."*"); 
     Mage::log("Depth ".$item->getShipping_length()."*"); 

有沒有人有任何想法?

回答

0

這工作:

if ($request->getAllItems()) { 
     foreach ($request->getAllItems() as $item) { 
     $item_ID = $item->getProductId(); 
     $_Product = Mage::getModel('catalog/product')->load($item_ID); 

     Mage::log("Weight ".$_Product->getWeight."*"); 
     Mage::log("Height ".$_Product->getShipping_height()."*"); 
     Mage::log("Width ".$_Product->getShipping_width()."*"); 
     Mage::log("Depth ".$_Product->getShipping_length()."*"); 
+1

這種帶有顯著的性能影響。記住物品不是產品,它們只是環繞它們...... $ _product = $ item-> getProduct()應該可以工作。 – 2011-06-06 08:45:10

+0

@丹尼爾 - 謝謝你這麼多,$ _product = $ item-> getProduct()的作品非常好。我仍然不確定爲什麼產品循環代碼在Flatrate上工作,但不在Tablerate上,但我仍在學習 - 並且由於上述技巧而更快一些。 – 2011-06-06 09:05:44

+0

...實際上這並沒有工作,但我不期望在籃子裏太多的物品,所以$ _Product = Mage :: getModel('catalog/product') - > load($ item_ID);現在就足夠了。 – 2011-06-06 09:12:23