বিভাগ আইডি থেকে পণ্য সংগ্রহ পান


18

আমি বিভাগের আইডি থেকে পণ্য সংগ্রহের চেষ্টা করছি। কয়েকটি জিনিস যা চেষ্টা করেছি তা ব্লকে রয়েছে:

 $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('*');

এটি কেবল পিএইচটিএমএল থেকে করার চেষ্টা করেছিল

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

এর কোনওটিই কাজ করে না তবে আমি কোনও ত্রুটিও দেখছি না। আমি একই পোস্ট দেখেছি যা একই প্রশ্নের মতো মনে হচ্ছে: ম্যাজেন্টো - নির্দিষ্ট বিভাগ থেকে পণ্যগুলি পান তবে সেই পদ্ধতিটি আমার পক্ষেও কার্যকর হয়নি। কোন সাহায্যের জন্য ধন্যবাদ!

উত্তর:


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);

আপনার সাহায্যের জন্য ধন্যবাদ! আমি কাছাকাছি বোধ করি তবে তবুও ঝাপটায় আপনার শেষ পদ্ধতিটি ব্যবহার করে, আমি যুক্ত করেছি foreach ($products as $product) { echo $product->getId(); }এবং আমি আইডিগুলির একটি সিরিজ পাই। তবে যখন আমি echo $product->getName();কিছুই চেষ্টা করি না। আমি আরও যোগ করার চেষ্টা করেছি ->addAttributeToSelect('*')। আরও কোন সাহায্যের জন্য ধন্যবাদ।
জ্যাক

@ ফিলফিনকিলে কি কোনও বিভাগের জন্য সমস্ত পণ্য পাওয়ার উপায় আছে? প্রতিবন্ধী ব্যক্তিদের পেতে আমার সমস্যা হচ্ছে। আমি ব্যবহার করছিMage::getResourceModel('catalog/product_collection')->setStoreId(Mage::app()->getStore()->getId())->addCategoryFilter($category)->addAttributeToSelect('sku');
নিক রোল্যান্ডো

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)কাজ হয়নি।
পেড্রাম বেহরোজি


@fschmengler আপনি কোডের ;পরে মিস করছেন$category = Mage::getModel('catalog/category')->load(123)
মুরতুজা জাবাওয়ালা

5

এই নীচের কোডটি আপনাকে আইডি 10 বিভাগ থেকে পণ্য সংগ্রহ দেবে।

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


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 এ বিভাগ আইডি ব্যবহার করে এই ভুলে যাওয়া বিভাগের সংগ্রহটি চেষ্টা করুন

  $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()প্রশ্নবিদ্ধ।
জুলিয়েন লাচাল 13
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.