2014-02-07 4 views
0

목록에있는 제품 만 표시하고 싶습니다. 모든 활성화 및 비활성화 제품 수를 계산하지만 활성 제품 만 계산하려면 스크립트가 있습니다. 내 코드는 다음과 같습니다 - 나는 어떤 변화가 활성 제품을 카운트 할 경우활성 제품은 자홍색으로 표시됩니다.

<?php 
    $_categories = Mage::getBlockSingleton('catalog/navigation'); 
    foreach ($_categories->getStoreCategories() as $_category) { 
    $category = Mage::getModel('catalog/category'); 
    $category->load($_category->getId()); 
    $subcategories = explode(',', $category->getChildren()); 
    $_count = is_array($subcategories)?count($subcategories):$subcategories->count(); 
    $pcount = array(); 
    foreach ($subcategories as $subcategoryId) { 
     $subcategory = Mage::getModel("catalog/category")->load($subcategoryId); 
     if($subcategory->getIsActive()){ 
     $pcount[] = $subcategory->getProductCount(); 
     } 
    } 
    } 

난 상태 getIsActive 경우에 시도했지만 그것이 모든 활성화 및 비활성화 제품을 얻을 작동하지 않을 수는, 저를 제안한다. 그것은 당신이 원하는 일을해야

$collection = $category->getProductCollection() 
       ->addAttributeToFilter('status', array('eq'=>'1'); 
$pcount = count($collection); 

: 당신의 foreach 루프에서

+0

이 코드에서는 카테고리가 제품이 아닌 활성화되어 있는지 확인합니다. 그것들은 '상태'가 활성화 또는 비활성화되어 있습니다. – Prateek

+0

활성 제품을 얻는 방법 ????? –

+0

제품은 "활성"상태가 아니며 "사용"또는 "사용 불가능"상태입니다. 활성화 된 제품을 계산하려면 뭔가 제안 할 수 있습니다. – Prateek

답변

0

, 당신은 뭔가를 편집해야합니다. 그렇지 않다면 알려주세요. 건배!

2

당신은 그들이 당신이 할 수있는에있는 카테고리의 독립적 인 활성 제품을 원하는 경우 : 당신이 경우

$collection = Mage::getModel('catalog/product')->getCollection() 
      ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) //add the attributes visible in product list to the collection 
      ->addMinimalPrice() //add the prices to the collection 
      ->addFinalPrice() 
      ->addTaxPercents() 
      ->addUrlRewrite(); //add the url rewrites to the collection 
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); //filter only active products 
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); //filter only visible in catalog products 

그럼 그냥 컬렉션을 반복하고 각 제품과 함께 뭔가를 할

foreach ($collection as $product) { 
    //do something with $product 
} 

을 컬렉션의 제품 수를 확인하려면 다음을 수행하십시오.

$size = $collection->getSize(); 

위의하지만 하나의 범주를 수행 할 경우

$categoryId = 10;//replace with own id. 
$category = Mage::getModel('catalog/category')->load($categoryId); 

$collection = Mage::getModel('catalog/product')->getCollection() 
       ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) //add the attributes visible in product list to the collection 
       ->addMinimalPrice() //add the prices to the collection 
       ->addFinalPrice() 
       ->addTaxPercents() 
       ->addUrlRewrite($categoryId); //add the url rewrites to the collection 
$collection->addCategoryFilter($category); 
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); //filter only active products 
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); //filter only visible in catalog products 
2

addVisibleFilterToCollectionaddSaleableFilterToCollection이되지 않습니다, 그리고 젠토의 최신 버전에서 아무것도하지 않는 것입니다. 다음을 사용해야합니다.

$collection->addAttributeToFilter('status', array('in'=>Mage::getSingleton('catalog/product_status')->getSaleableStatusIds())); 
$collection->addAttributeToFilter('visibility', array('in'=>Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds())); 
+0

Marius의 답변을 편집하여 제안 할 가치가 있습니다. – ScottSB

관련 문제