Showing posts with label brand. Show all posts
Showing posts with label brand. Show all posts

Monday, September 19, 2011

How to add category and manufacturer dropdown to the magento default search?

Here is the code to add category and manufacturer / brand dropdown to the magento default search. Just replace your "template/catalogsearch/form.mini.phtml" with the below code.
<?php
$category = Mage::getModel('catalog/category');
if(is_object(Mage::registry('current_category'))){
    $current_category_path=Mage::registry('current_category')->getPathIds();
}else{
    $current_category_path = array();
}
$category->load(Mage::app()->getStore()->getRootCategoryId());
$children_string = $category->getChildren();
$children = explode(',',$children_string);
$extra_options='';
foreach($children as $c){
    $selected = (in_array($c, $current_category_path))?'SELECTED':'';
    $extra_options.= '<option $selected . value="' . $c . '" ' . '>' . htmlspecialchars($category->load($c)->getName()) . '</option>' . "\n";
}
?>

<form id="search_mini_form" action="<?php echo $this->helper('catalogSearch')->getResultUrl() ?>" method="get">
   <fieldset>
        <legend><?php echo $this->__('Search Site') ?></legend>
        <div class="mini-search">
            <input id="search" type="text" class="input-text" name="<?php echo $this->helper('catalogSearch')->getQueryParamName() ?>" value="<?php echo $this->helper('catalogSearch')->getEscapedQueryText() ?>" />
            <select name="cat">
            <option value="">Select Category</option>
            <?= $extra_options ?>
           </select>    
           <?php $product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'manufacturer');
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$manufacturers = $attribute->getSource()->getAllOptions(false);?>
 <select name="manufacturer" id="manufacturer" class="" title="Manufacturer" >
          <?php foreach ($manufacturers as $manufacturer): ?>
            <option value="<?php echo $manufacturer['value'] ?>"><?php echo $manufacturer['label'] ?></option>
   <?php endforeach; ?>
       </select>
           <input type="submit" value="Go" style="border: 1px solid #808080;" alt="<?php echo $this->__('Search') ?>" />
            <div id="search_autocomplete" class="search-autocomplete"></div>
           <script type="text/javascript">
            //<![CDATA[
                var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search Entire Site...') ?>');
                searchForm.initAutocomplete('<?php echo $this->helper('catalogSearch')->getSuggestUrl() ?>', 'search_autocomplete');
            //]]>
            </script>
        </div>
    </fieldset>
</form>  

How to show all the manufactures or brand list in magento left sidebar?

create a manufacturers.phtml file under "app/design/frontend/default/YOURTHEME/template/catalog/product"
<?php
/*
 * Manufacturers Listing on sidebar
 * @category    design
 * @package     base_default
 */
?>

<div>
  <div>
    <h4><span>Our Brands</span></h4>
  </div>
  <div>
  <?php
    $product = Mage::getModel('catalog/product');
    $attributes = Mage::getResourceModel('eav/entity_attribute_collection')
                  ->setEntityTypeFilter($product->getResource()->getTypeId())
                  ->addFieldToFilter('attribute_code', 'manufacturer');
    $attribute = $attributes->getFirstItem()->setEntity($product->getResource());
    $manufacturers = $attribute->getSource()->getAllOptions(false);
   ?>
    <ul id="manufacturer_list">
      <?php foreach ($manufacturers as $manufacturer): ?>
      <li><a href="<?php echo Mage::getBaseUrl(); ?>catalogsearch/advanced/result/?manufacturer[]=<?php echo $manufacturer['value'] ?>"><?php echo $manufacturer['label'] ?></a></li>
      <?php endforeach; ?>
    </ul>
  </div>
  <div></div>
</div> 
Add the below code in your "/app/design/frontend/default/YOURTHEME/layout/catalog.xml" file.



Thats it you are done.

Saturday, September 10, 2011

How to get product collection based on attribute (manufacturer, brand) values in magento?

Here is the code to get products based on attribute values. For example here I used to show products based on attribute "brand". In brand attribute I have values nike, adidas. 11 is the code for nike. I here used to display only nike products.
$_productCollection = Mage::getModel('catalog/product')->getCollection();
$_productCollection->addAttributeToFilter('brand', array('in' => array(11)));
$_productCollection->addAttributeToSelect('*');
$_productCollection->load();