我有Magento的1.3.2和我有奇怪的問題:的Magento - > getSku()或的getData(「SKU」)返回空字符串
當我在list.phtml
,我嘗試使用,以獲取SKU getSku()
或getData('sku')
我得到空字符串。 getName()
確實有效。但是,當我從其他頁面執行此操作時,它運行良好。
我var_dump
- 它並沒有顯示SKU。
這是什麼原因造成的?
我有Magento的1.3.2和我有奇怪的問題:的Magento - > getSku()或的getData(「SKU」)返回空字符串
當我在list.phtml
,我嘗試使用,以獲取SKU getSku()
或getData('sku')
我得到空字符串。 getName()
確實有效。但是,當我從其他頁面執行此操作時,它運行良好。
我var_dump
- 它並沒有顯示SKU。
這是什麼原因造成的?
另一種選擇是使用您已擁有的產品的ID重新加載list.phtml中的產品對象。該代碼讀取的東西有點像:
$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
注意,$ _產品是你在你的收藏中得到什麼已經,並注意getSku是區分大小寫(因爲都是Magento的屬性的getter/setter方法)。
@Prattski的解決方案是可取的,因爲你並不真正想要加載/操作對象,但聽起來好像你的集合有點搞砸了。 SKU是表catalog_product_entity
表中存在的核心字段之一,因此不常見,不會被加載。
在檢索集合時,可能不會將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模板文件中訪問。
這可能是一個很好的解決方案,但我建議不要延長類,而是使用事件觀察這個(也許'catalog_block_product_list_collection')。 – mkutyba 2017-03-04 16:29:08
我很驚訝,沒有人給你最簡單,最恰當的答案了:
轉到您的管理員,目錄>>屬性>>管理屬性。然後編輯'sku'屬性。更改「用於產品清單」從'否'至'是'。那麼你將不得不從list.phtml
產品對象訪問它與->getSku()
他們在那裏展示。 getSku()只是不起作用。 – Himberjack 2010-08-26 06:15:38
這完全是我的問題,謝謝。 – UltimateBrent 2013-04-04 19:13:52
不錯的想法,只是我需要它在結帳 – 2013-07-10 06:09:49
我有同樣的問題太多,但嘗試$ _product [「SKU」] 它爲我工作
$ _product [「SKU」];足以獲得產品sku。
試試這個:
<?php
$current_product = Mage::registry('current_product');
if($current_product) {
$sku = $current_product->getSku();
// output sku
echo $sku;
}
?>
親愛的未來讀者們,如果在foreach循環中使用這個解決方案,它會對性能造成相當大的影響。 – mkutyba 2017-03-04 16:32:54