2010-08-22 43 views

回答

22

另一種選擇是使用您已擁有的產品的ID重新加載list.phtml中的產品對象。該代碼讀取的東西有點像:

$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku(); 

注意,$ _產品是你在你的收藏中得到什麼已經,並注意getSku是區分大小寫(因爲都是Magento的屬性的getter/setter方法)。

@Prattski的解決方案是可取的,因爲你並不真正想要加載/操作對象,但聽起來好像你的集合有點搞砸了。 SKU是表catalog_product_entity表中存在的核心字段之一,因此不常見,不會被加載。

+2

親愛的未來讀者們,如果在foreach循環中使用這個解決方案,它會對性能造成相當大的影響。 – mkutyba 2017-03-04 16:32:54

4

在檢索集合時,可能不會將sku添加到屬性列表中。我假設你正在討論文件/template/catalog/product/list.phtml。如果是這樣,那麼你需要擴展相應的代碼文件(/app/code/core/Mage/Catalog/Block/Product/List.php)。

我認爲最好的方法是重載getLoadedProductCollection()方法:

public function getLoadedProductCollection() 
    { 
     return $this->_getProductCollection()->addAttributeToSelect('sku'); 
    } 

這可能不行,我一直無法對其進行測試,因爲在我的商店的SKU和所有其他屬性可以在list.phtml模板文件中訪問。

+0

這可能是一個很好的解決方案,但我建議不要延長類,而是使用事件觀察這個(也許'catalog_block_product_list_collection')。 – mkutyba 2017-03-04 16:29:08

40

我很驚訝,沒有人給你最簡單,最恰當的答案了:

轉到您的管理員,目錄>>屬性>>管理屬性。然後編輯'sku'屬性。更改「用於產品清單」'否''是'。那麼你將不得不從list.phtml產品對象訪問它與->getSku()

+0

他們在那裏展示。 getSku()只是不起作用。 – Himberjack 2010-08-26 06:15:38

+1

這完全是我的問題,謝謝。 – UltimateBrent 2013-04-04 19:13:52

+0

不錯的想法,只是我需要它在結帳 – 2013-07-10 06:09:49

-1

我有同樣的問題太多,但嘗試$ _product [「SKU」] 它爲我工作

-4

$ _product [「SKU」];足以獲得產品sku。

0

試試這個:

<?php 
    $current_product = Mage::registry('current_product'); 
    if($current_product) { 
     $sku = $current_product->getSku(); 
     // output sku 
     echo $sku; 
    } 
?>