2009-01-18 16 views
9

मैं उत्पाद दृश्य के भीतर प्रदर्शित करने के लिए मौजूदा उत्पाद के रूप में एक ही श्रेणी से यादृच्छिक उत्पादों की एक सूची प्राप्त करना चाहते हैं उत्पादों से प्राप्त करने के लिए - अब तक सब मैं खोदा गया हैकैसे Magento ई-कॉमर्स में एक विशेष वर्ग

है

Magento products by categories

क्या कोई यह जानता है कि यह कैसे करें?

उत्तर

7

मैं क्या कर रहा एप्लिकेशन/डिजाइन/दृश्यपटल/डिफ़ॉल्ट में है समाप्त हो गया/THEME_NAME/टेम्पलेट/सूची/उत्पाद/list_random.phtml

की तरह कुछ कर रही:

<?php 
$_categories=$this->getCurrentChildCategories(); 

$_category = $this->getCurrentCategory(); 
$subs = $_category->getAllChildren(true); 
$result = array(); 
foreach($subs as $cat_id) { 
    $category = new Mage_Catalog_Model_Category(); 
    $category->load($cat_id); 
    $collection = $category->getProductCollection(); 
    foreach ($collection as $product) { 
     $result[] = $product->getId(); 
    } 

} 
shuffle($result); 
?> 

इस आप एक मिल जाएगा उत्पाद आईडी की सरणी। आप उन के माध्यम से पाश कर सकते हैं और का उपयोग कर मक्खी पर उत्पादों को बनाने:

<?php 
$i=0; 
foreach ($result as $_product_id){ 
    $i++; 
    $_product = new Mage_Catalog_Model_Product(); 
    $_product->load($_product_id); 
    //do something with the product here 
}?> 

तो, सेमी में एक स्थिर ब्लॉक निम्नलिखित सामग्री के साथ

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

अंत में, Catalog- में बनाने> श्रेणियों अनुभाग की व्यवस्था करें , श्रेणी का चयन करें, फिर प्रदर्शन सेटिंग्स टैब। डिस्प्ले मोड को "स्टेटिक ब्लॉक और उत्पाद" पर स्विच करें और फिर ड्रॉप सूची से अपना ब्लॉक चुनें।

और है कि यह करना चाहिए।

+1

सिर्फ एक टिप्पणी: उपरोक्त कोड वर्तमान और उप श्रेणियों से सभी उत्पादों मिल जाएगा। इसे केवल वर्तमान श्रेणी बनाने के लिए यह बहुत छोटा होना चाहिए। –

+0

नोट: आपको टेम्पलेट फ़ाइल में "जटिल तर्क" शामिल नहीं करना चाहिए। आपको फ़िल्टर किए गए उत्पादों को पुनर्प्राप्त करने के लिए विशिष्ट विधि के साथ ब्लॉक बनाना चाहिए जो टेम्पलेट में उपयोग किया जाएगा।इसके अलावा आपको @chapagain विधि या 'Mage_Catalog_Model_Category :: getProductCollection()' का उपयोग करना चाहिए जो मूल रूप से वही है, लेकिन यह स्टोर दृश्य फ़िल्टर भी जोड़ता है। – xyz

2

इस मामले में आपको Mage::getModel('catalog/product') बुला क्योंकि तब आप एक के लिए कॉन्फ़िगर वस्तु दृष्टान्त, किसी भी कॉन्फ़िगर किया गया मॉड्यूल के लिए बढ़ा दी मिलता है द्वारा एक मॉडल का दृष्टांत चाहिए।

आप इसे new Mage_Catalog_Model_Product() इस तरह करते हैं मॉड्यूल पर ध्यान नहीं देगा और Magento एपीआई बाईपास हैं।

18

यहाँ किसी विशेष श्रेणी से उत्पादों को प्राप्त करने कोड है: -

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

आप मूल रूप से वर्ग को लोड, उत्पाद संग्रह और फिर उचित रूप से फ़िल्टर करें।

$products = Mage::getModel('catalog/category')->load($category_id) 
->getProductCollection() 
->addAttributeToSelect('*') 
->addAttributeToFilter('status', 1) 
->addAttributeToFilter('visibility', 4) 
->addAttributeToFilter('special_price', array('neq' => "")) 
->setOrder('price', 'ASC') 
; 
+1

शायद यहां सबसे अच्छा समाधान है, हालांकि यदि आप कोड के साथ पूर्ण उत्तर यहां शामिल करेंगे तो यह बेहतर होगा। बस यूआरएल कभी काम करना बंद कर देता है। – todd

+1

जोश: @ टोड सही है। यहां अपना उत्तर पोस्ट करें। –

+0

यह समाधान शायद अधिक कुशल है कि स्वीकृत उत्तर के रूप में इसे पूरे उत्पाद श्रृंखला से गुज़रना पड़ेगा, केवल उस श्रेणी से संबंधित। – dayuloli

3
$products = Mage::getModel('catalog/category')->load(category_id); //put your category id here 
     $productslist = $products->getProductCollection()->addAttributeToSelect('*'); 
     foreach($productslist as $product) 
     { 
     echo 'price: ' . $product->getPrice() . '<br/>'; 
     } 

इस आदेश perticular category.Hope के उत्पाद विवरण यह आप में मदद करता है लाने के लिए में अब तक सुविधाजनक कोड कर रहा है।

0

यह कोड आपको उत्पादोंश्रेणी आईडी 2 से प्राप्त करने में मदद करेगा। और यह भी यहाँ उत्पाद प्रविष्टि के लिए एक टेम्पलेट फ़ाइल list_home.phtml उपयोग करता है।

echo $this->getLayout()->createBlock("catalog/product_list") 
    ->setCategoryId(2)->setTemplate("catalog/product/list_home.phtml")->toHtml(); 

list_home.phtml

<?php 
$this->getChild('toolbar')->setCurrentMode('list'); //uses list mode 
$_productCollection = $this->getLoadedProductCollection(); 
$_helper = $this->helper('catalog/output'); 
    ?> 

    <?php if (!$_productCollection->count()): ?> 
     <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p> 
    <?php else: ?> 

--use code for listing--- 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^