카테고리 ID에서 제품 컬렉션 가져 오기


18

카테고리 ID에서 제품 모음을 가져 오려고합니다. 내가 시도한 몇 가지가 블록에 있습니다.

 $category = Mage::getModel('catalog/category')->load(123)
        ->getProductCollection();

    $category = Mage::getModel('catalog/category')->load(123);
    $products = $category->getProductCollection()->addCategoryFilter($category)
                         ->addAttributeToFilter('type_id', 'simple')
                         ->addAttributeToSelect('*');

또한 phtml에서 그냥 해 보았습니다.

$oCatId = Mage::getModel('catalog/category')->load(769); 
        $products->addCategoryFilter($oCatId);

이 중 어느 것도 작동하지 않지만 오류가 표시되지 않습니다. 나는 같은 질문처럼 보이는 다른 게시물을 보았습니다 : Magento-특정 범주에서 제품 가져 오기 그러나 그 방법은 나에게 효과적이지 않았습니다. 도움을 주셔서 감사합니다!

답변:


32

이 시도:

$products = Mage::getModel('catalog/category')->load($category_id)
 ->getProductCollection()
 ->addAttributeToSelect('*') // add all attributes - optional
 ->addAttributeToFilter('status', 1) // enabled
 ->addAttributeToFilter('visibility', 4) //visibility in catalog,search
 ->setOrder('price', 'ASC'); //sets the order by price

출처: http://overlycaffeinated.com/blog/2011/02/get-all-sale-products-from-a-category-in-magento/

이미 카테고리를로드했기 때문에 카테고리 필터를 추가하기 때문에 작동합니다.

Mage_Catalog_Model_Category

public function getProductCollection()
{
    $collection = Mage::getResourceModel('catalog/product_collection')
        ->setStoreId($this->getStoreId())
        ->addCategoryFilter($this);
    return $collection;
}

잠깐만, 여전히 작동하지 않습니다!

좋아, 아마도 더 큰 문제가있을 수 있습니다 getProductCollection. 그 편리한 방법을 우회 해 봅시다 :

$category = Mage::getModel('catalog/category')->load($category_id);
$products = Mage::getResourceModel('catalog/product_collection')
        ->setStoreId(Mage::app()->getStore()->getId())
        ->addCategoryFilter($category);

당신의 도움을 주셔서 감사합니다! 나는 더 가깝게 느끼지만 여전히 under 거리고있다. 마지막 방법을 사용하여 추가 foreach ($products as $product) { echo $product->getId(); }하고 일련의 ID를 얻습니다. 그러나 echo $product->getName();아무것도 시도 하지 않을 때 . 나는 ->addAttributeToSelect('*')또한 추가하려고 시도했다 . 더 도움을 주셔서 감사합니다.
Zac

@philwinkle 카테고리에 대한 모든 제품을 얻는 방법이 있습니까? 비활성화 된 것을 얻는 데 문제가 있습니다. 사용하고 있습니다Mage::getResourceModel('catalog/product_collection')->setStoreId(Mage::app()->getStore()->getId())->addCategoryFilter($category)->addAttributeToSelect('sku');
Nick Rolando

9

프런트 엔드에서 일반적으로 제품 목록에 필요한 모든 데이터가 포함 된 제품 컬렉션을로드하는 방법 :

$_categoryId = 123;
$category = Mage::getModel('catalog/category')->load($_categoryId );
$productCollection = $category->getProductCollection();
$productCollection
        ->addStoreFilter()
        ->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds())
        ->addMinimalPrice()
        ->addFinalPrice()
        ->addTaxPercents()
        ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
        ->addUrlRewrite();

이는 제품 콜렉션이 가격, 제품 링크 및 "제품 목록에서 사용됨"으로 구성된 속성을 표시하는 데 필요한 데이터를로드하도록 준비합니다.


결과를 어떻게 제한 할 수 있습니까? ->limit(5)작동하지 않았다.
Pedram Behroozi

->setPageSize(5)
Fabian Schmengler

@fschmengler 당신 ;$category = Mage::getModel('catalog/category')->load(123)코드 후 그리워
Murtuza Zabuawala

5

아래 코드는 카테고리 ID 10의 제품 콜렉션을 제공합니다.

$categoryId = 10;    
$products = Mage::getSingleton('catalog/category')->load($categoryId)
            ->getProductCollection()
            ->addAttributeToSelect('*');

3

특정 카테고리 ID에서 제품 콜렉션을 가져 오는 코드 :

$productCollection = Mage::getResourceModel('catalog/product_collection')
                       ->addCategoryFilter($category);

완전한!!! +1 :)
SagarPPanchal

$ category = $ categoryId는 어디입니까?
lorakeen

2

아래 코드는 제품 컬렉션을로드하고 속성을 사용하여 필터링하는 것보다 훨씬 간단하고 효율적입니다.

$categoryId = 32; // Replace with your category

$category = Mage::getModel('catalog/category')
                 ->setStoreId(Mage::app()->getStore()->getId())
                 ->load($categoryId);

Mage::register('current_category', $category);

$products = Mage::getSingleton('catalog/layer')->getProductCollection();

echo $products->getSize();

0

Magento 2에서 카테고리 ID를 사용하여 카테고리 잊어 버리십시오.

  $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
  $subCategory =  $objectManager->create('Magento\Catalog\Model\Category')-> 
         load('categorey_id');
  foreach($subCategory as $subcat)
   { 
        print_r($subcat->getData();
  }

-2
<?php

$categoryid = 123; // Category Id

$category = new Mage_Catalog_Model_Category();
$category->load($categoryid);
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*'); 

foreach ($_productCollection as $_product) { ?>
    <div class="pr_section">
        <div class="pr_desc">
            <a href="<?php echo $_product->getProductUrl(); ?>"><?php echo $_product->getName(); ?></a>
            <?php echo $this->getReviewsSummaryHtml($_product, false, true); // Reviews ?>
                <?php echo $this->getPriceHtml($_product, true) ?>
                <?php echo $_product->getShortDescription();?>

                <?php if(!$_product->canConfigure() && $_product->isSaleable()): ?>
                    <p><button type="button" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Add to Cart')) ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
                <?php elseif($_product->getStockItem() && $_product->getStockItem()->getIsInStock()): ?>
                    <p><a title="<?php echo $this->__('View Details') ?>" class="button btn-cart" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->__('View Details') ?></a></p>
                <?php else: ?>
                    <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                <?php endif; ?>
        </div>
        <div class="pr_img">
                <a href="<?php echo $_product->getProductUrl() ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" width="200" height="200" alt="" /></a> 
        </div>
<?php } ?>

세부적으로 제품을 수집하십시오. 도움이 되길 바랍니다.


1
이 질문에 대한 답변이 충분하기 때문에 네크로 포스팅이 필요하지 않은 것 같습니다. 또한, 당신의 사용에 new Mage_Catalog_Model_Category()의문의 여지가 있습니다.
Julien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.