2012-02-13 31 views
0

我想獲得某個類別顯示在我的網頁之一,我一些奇怪的結果。我使用下面的代碼用5使用Mage_Catalog_Model_Category奇怪的行爲

$category = new Mage_Catalog_Model_Category(); 
$category->load(5); 

然而,ID來加載類,這不返回任何結果,即使有產品的類別。我已將ID更改爲2(這是默認類別),並且返回2個產品,即使該類別中沒有產品!

這是我如何加載代碼,我創建了一個靜態塊所謂的「度日類別」,啓用它,並用下面的代碼填充它:

{{block type="catalog/navigation" template="catalog/product/by_category.phtml"}} 

然後,我創建了一個新的一頁並添加了該靜態塊。

有沒有其他人經歷過這個?任何人都可以伸出援手嗎?

+3

類別應該使用工廠方法模式'法師:: getModel(」被實例化目錄/類別)'。方法調用'$ category-> load(5)'總是返回已加載的模型,所以我相信你的問題可能會被重新提出一點。此外,沒有像默認類別那樣的東西。我假設你是指根類別?根類別的'is_anchor'設置的值是多少?如果您搜索產品,產品是否可見? – Vinai 2012-02-13 15:18:27

回答

1

編程,加載你必須做它爲以下類別的產品列表:

$catalog = Mage::getModel('catalog/category')->load(/* your category ID*/); 
$collection = $catalog->getProductCollection(); 
Zend_Debug::dump($collection->getItems()); 

此代碼不能在靜態塊這樣的工作。您必須創建一個類型爲Mage_Core_Block_Template的類(或類似的),然後使用預定義的類別ID準備集合,然後在您的靜態塊中,可以使用以下代碼{{block type =「catalog/mynewblock」template =「catalog /當塊將由CMS模塊實例化並且由於過濾器Mage_Core_Model_Email_Template_Filter,塊將具有category_id的值。當塊被CMS模塊實例化並且由於過濾器Mage_Core_Model_Email_Template_Filter,塊將具有category_id的值。在阻止你必須做到以下幾點:

protected function _beforeHtml(){ // or in the protected function _toHtml() depending of what you want to do and how you want to do it. 
    $categoryId = $this->getCategoryId(); 
    $catalog = Mage::getModel('catalog/category')->load($categoryId); 
    $collection = $catalog->getProductCollection(); 
    $products = $collection->getItems(); 
    $this->setProducts($products); // in your template file you can, then, do $this->getproducts(); etc... 
    ... 
} 

你可以找到答案的其他信息,我寫到這裏How to display multiple categories with a Magento block