2008-11-07 16 views
14

क्या कोई जानता है कि मैं Magento में एक व्यू फ़ाइल के भीतर से किसी विशिष्ट श्रेणी से संबंधित उत्पादों की सूची कैसे प्राप्त कर सकता हूं?श्रेणियों द्वारा Magento उत्पादों

+0

आप "megento" या "चुंबक" मतलब है? दोनों का उपयोग आपके प्रश्न और टैग –

+0

फिक्स्ड मैग्नेटो -> Magento –

उत्तर

8

यह सब निर्भर करता है जिस पर आप कर रहे हैं देख सकते हैं। ;-)

सबसे पहले, मुझे आशा है कि आप अपने टेम्पलेट सेट (मेरे उदाहरण में डिफ़ॉल्ट) के भीतर रहने लगा।

एक उदाहरण के रूप में इस का उपयोग करें:

<?php 
$_cat   = $this->getCurrentCategory(); 
$_parent  = $_cat->getParentCategory(); 
$_categories = $_parent->getChildren(); 

/* @var $category Mage_Catalog_Model_Category */ 
$collection = Mage::getModel('catalog/category')->getCollection(); 
/* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */ 
$collection->addAttributeToSelect('url_key') 
    ->addAttributeToSelect('name') 
    ->addAttributeToSelect('is_anchor') 
    ->addAttributeToFilter('is_active', 1) 
    ->addIdFilter($_categories) 
    ->setOrder('position', 'ASC') 
    ->joinUrlRewrite() 
    ->load(); 

$productCollection = Mage::getResourceModel('catalog/product_collection'); 
$layer    = Mage::getSingleton('catalog/layer'); 
$layer->prepareProductCollection($productCollection); 
$productCollection->addCountToCategories($collection); 
// $productCollection should be ready here ;-) 
?> 

मैं अपने टेम्पलेट में बहन श्रेणियों को प्रदर्शित करने के लिए ऊपर दिए गए कोड का उपयोग कर रहा है - यह आदर्श नहीं है, लेकिन यह काम करता है।

यह एक हैक की तरह है क्योंकि मेरे पास अभी तक सभी लेआउट एक्सएमएल पागलपन सीखने का समय नहीं है। अन्यथा यदि आप एक्सएमएल का उपयोग करते हैं तो आपको ध्यान में रखना होगा - यह सब इस बात पर निर्भर करता है कि आप कहां हैं। जहां का अर्थ है टेम्पलेट फ़ाइल और अनिवार्य रूप से लेआउट (ऐप/डिज़ाइन/फ्रंटेंड/डिफ़ॉल्ट/डिफ़ॉल्ट/लेआउट/* के संदर्भ में)।

मुझे पता है कि यह ज्यादा नहीं है, लेकिन मुझे उम्मीद है कि यह आपको प्रारंभ करने में मदद करेगा।

7

यहां किसी भी विशेष श्रेणी से उत्पाद प्राप्त करने के लिए कोड है। आप इसे दृश्य फ़ाइल में भी उपयोग कर सकते हैं।

// if you want to display products from current category 
$category = Mage::registry('current_category'); 

// if you want to display products from any specific category 
$categoryId = 10; 
$category = Mage::getModel('catalog/category')->load($categoryId); 

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

// printing products name 
foreach ($productCollection as $product) { 
    echo $product->getName(); 
    echo "<br />"; 
} 
21

आप फ़िल्टर करने के लिए magento ऑब्जेक्ट का उपयोग कर सकते हैं।

उदाहरण:

$categoryId = 123; // a category id that you can get from admin 
$category = Mage::getModel('catalog/category')->load($categoryId); 

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

print_r($products); 
+0

आप यूफडल को संशोधित करने के लिए '' '$ CurrentCategory = Mage :: रजिस्ट्री ('current_category') का उपयोग भी कर सकते हैं;' '' – iamjonesy

0

तुम हमेशा के लिए एक दृश्य में इस तरह कोड डालने से बचना चाहिए, यह बहुत बुरा व्यवहार है। आप मुद्दों में भी भाग ले सकते हैं क्योंकि विचारों को कैश किया जा सकता है, जिससे अप्रत्याशित व्यवहार होता है।

आपको उस ब्लॉक को ओवरराइड करना चाहिए जिसका उपयोग आप कर रहे हैं, वहां कोड डालना चाहिए। फिर आप अपनी दृश्य फ़ाइलों के अंदर किसी भी नई विधि को कॉल कर सकते हैं। एप्लिकेशन/कोड/कोर/सूची/ब्लॉक/उत्पाद/List.php

को

:

उदाहरण के लिए, आप से Mage_Catalog_Block_Product_List

नकल कर सकता है ऐप्स/कोड/स्थानीय/सूची/ब्लॉक/उत्पाद/List.php

आप उपरोक्त पदों में उल्लिखित कुछ कोड का उपयोग करके संभवतः एक नई विधि जोड़ सकते हैं। आपकी नई विधि तब आपकी दृश्य फ़ाइल (list.phtml या इस ब्लॉक का उपयोग करके कोई भी दृश्य) के अंदर उपलब्ध होगी

3

मुझे इसकी बहुत आवश्यकता है। यहां बताया गया है कि मैंने इसे कैसे किया है:

$prod_whole = array(); 
if(!empty($_menu)) //$_menu = array of Categories with some basic info 
foreach($_menu as $v) 
{ 
    if($v['name']=='HOME') 
    continue; 

    $cat_id = $v['id']; 

    #/ Setup Products 
    $category = Mage::getModel('catalog/category')->load($cat_id); 

    $collection = Mage::getModel('catalog/product')->getCollection() 
    ->addAttributeToSelect('*') // select all attributes 
    ->addCategoryFilter($category) 
    ->setPageSize(8) // limit number of results returned 
    ->setCurPage(0) 
    ->load() 
    ; 


    $prod_collection = array(); 
    foreach ($collection as $product) 
    { 
     $prod_collection_1 = array(); 

     #/ Basic Info 
     $prod_collection_1['id'] = $product->getId(); 
     $prod_collection_1['name'] = $product->getName(); 
     $prod_collection_1['price'] = (float) $product->getPrice(); 
     //$prod_collection_1['desc'] = $product->getDescription(); 
     //$prod_collection_1['short'] = $product->getShortDescription(); 
     $prod_collection_1['type'] = $product->getTypeId(); 
     $prod_collection_1['status'] = $product->getStatus(); 
     $prod_collection_1['special_price'] = $product->getSpecialPrice(); 
     $prod_collection_1['direct_url'] = $product->getProductUrl(); 


     #/ getCategoryIds(); returns an array of category IDs associated with the product 
     foreach ($product->getCategoryIds() as $category_id) 
     { 
      $category = Mage::getModel('catalog/category')->load($category_id); 
      $prod_collection_1['parent_category'] = $category->getParentCategory()->getName(); 
      $prod_collection_1['category'] = $category->getName(); 
      //$prod_collection_1['category_idx'] = preg_replace('/[\s\'\"]/i', '_', strtolower(trim($prod_collection_1['category']))); 
      $prod_collection_1['category_id'] = $category->getId(); 
     } 

     #/gets the image url of the product 
     $prod_collection_1['img'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA).'catalog/product'.$product->getImage(); 


     $prod_collection[] = $prod_collection_1; 

    }//end foreach..... 

    $prod_whole[$cat_id] = $prod_collection; 

}//end foreach categories....... 
//var_dump('<pre>', $prod_whole); 

आशा है कि इससे मदद मिलती है।

3
<?php 

    $category_id = 10; // if you know static category then enter number 

$catagory_model = Mage::getModel('catalog/category')->load($category_id); //where $category_id is the id of the category 



    $collection = Mage::getResourceModel('catalog/product_collection'); 

     $collection->addCategoryFilter($catagory_model); //category filter 

     $collection->addAttributeToFilter('status',1); //only enabled product 

     $collection->addAttributeToSelect(array('name','url','small_image')); //add product attribute to be fetched 

     //$collection->getSelect()->order('rand()'); //uncomment to get products in random order  

     $collection->addStoreFilter();   

     if(!empty($collection)) 

     { 

       foreach ($collection as $_product): 

       echo $_product->getName(); //get product name   

      endforeach; 

     }else 

      { 

       echo 'No products exists'; 

     }    

    ?> 
+0

thnx .. – Chiragit007

5
<?php 
$c_id = 2; 
$category = new Mage_Catalog_Model_Category(); 
$category->load($c_id); 
$collection = $category->getProductCollection(); 
$collection->addAttributeToSelect('*'); 
foreach ($collection as $_product) { ?> 
<a href="<?php echo $_product->getProductUrl(); ?>"><?php echo $_product->getName(); ?></a> 
<?php } ?> 
संबंधित मुद्दे