Magento: Search by Category

http://www.panticz.de/sites/default/files/magento/catalogsearch/form.mini.phtml

<form id="search_mini_form" action="<?php echo $this->helper('catalogsearch')->getResultUrl() ?>" method="get">
    <div class="form-searchx">
	<!-- <img border="0" height="16" width="16" alt="" src="skin/frontend/default/default/images/icon_search.gif"> -->
        <input id="search" type="text" name="<?php echo $this->helper('catalogsearch')->getQueryParamName() ?>" value="<?php echo $this->helper('catalogsearch')->getEscapedQueryText() ?>" class="input-text" />



        <?php $startCategory = 2227; ?>
        <select name="cat" id="searchCategory">
	        <option value="<?php echo $startCategory ?>">Alle Kategorien</option>

            <?php
            $searchCategory = Mage::app()->getRequest()->getParam('cat');

            $cats = Mage::getModel('catalog/category')->load($startCategory)->getChildren();
            $catIds = explode(',', $cats);

            $categories = array();
            foreach($catIds as $catId) {
               $category = Mage::getModel('catalog/category')->load($catId);
               $categories[$category->getName()] = $catId;
            }

            ksort($categories, SORT_STRING);
            ?>

            <?php foreach($categories as $name => $catId): ?>
            <option value="<?php echo $catId; ?>" <?php if($catId == $searchCategory) echo "selected"?>><?php echo $name; ?></option>
            <?php endforeach; ?>
        </select>



        <button type="submit" title="<?php echo $this->__('Search') ?>" class="button"><span><span><?php echo $this->__('Search') ?></span></span></button>

        <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->__('') ?>');
            searchForm.initAutocomplete('<?php echo $this->helper('catalogsearch')->getSuggestUrl() ?>', 'search_autocomplete');
        //]]>
        </script>
    </div>
</form>


<!-- <input type="hidden" name="order" value="relevance"> -->
<!-- <input type="hidden" name="dir" value="desc"> -->

	<?php /* old version
	$categories = Mage::getModel('catalog/category')->load(2227)->getChildren();

    $catIds = explode(',',$categories);
	foreach($catIds as $catId) {
		$category = Mage::getModel('catalog/category')->load($catId);
		$categoryName = $category->getName();

		echo "<option value=\"$catId\">$categoryName</option>\n";
	} */
	?>

http://www.panticz.de/sites/default/files/magento/catalogsearch/catalogsearch.xml.diff

--- ./app/design/frontend/base/default/layout/catalogsearch.xml	2010-11-29 15:05:49.000000000 +0100
+++ ./app/design/frontend/default/default/layout/catalogsearch.xml	2010-11-29 15:29:58.000000000 +0100
@@ -51,7 +51,7 @@
         <remove name="right.newsletter" />
         <remove name="right.reports.product.viewed" />
         <reference name="root">
-            <action method="setTemplate"><template>page/3columns.phtml</template></action>
+            <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
         </reference>
         <reference name="left">
             <block type="catalogsearch/layer" name="catalogsearch.leftnav" after="currency" template="catalog/layer/view.phtml"/>
@@ -69,6 +69,7 @@
                     <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                     <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
                     <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
+                    <action method="setColumnCount"><count>4</count></action>
                 </block>
                 <action method="setListOrders"/>
                 <action method="setListModes"/>
@@ -85,7 +86,7 @@
         <label>Advanced Search Form</label>
         <!-- Mage_Catalogsearch -->
         <reference name="root">
-            <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
+            <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
         </reference>
         <reference name="head">
             <action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
@@ -107,16 +108,21 @@
         <update handle="page_two_columns_right" />
         <!-- Mage_Catalogsearch -->
         <reference name="root">
-            <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
+            <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
         </reference>
         <reference name="content">
             <block type="catalogsearch/advanced_result" name="catalogsearch_advanced_result" template="catalogsearch/advanced/result.phtml">
                 <block type="catalog/product_list" name="search_result_list" template="catalog/product/list.phtml">
+                    <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
+                        <block type="page/html_pager" name="product_list_toolbar_pager"/>
+                    </block>
                     <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
                     <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
                     <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
                     <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                     <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
+                    <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
+                    <action method="setColumnCount"><count>4</count></action>
                 </block>
                 <action method="setListOrders"/>
                 <action method="setListModes"/>
@@ -131,7 +137,7 @@
         <remove name="left"/>
 
         <reference name="root">
-            <action method="setTemplate"><template>page/1column.phtml</template></action>
+            <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
         </reference>
         <reference name="content">
             <block type="catalogsearch/term" name="seo.searchterm" template="catalogsearch/term.phtml"/>

http://www.panticz.de/sites/default/files/magento/catalogsearch/Query.php.diff

--- ./app/code/core/Mage/CatalogSearch/Model/Mysql4/Query.php.org	2010-12-15 16:32:26.000000000 +0100
+++ ./app/code/core/Mage/CatalogSearch/Model/Mysql4/Query.php	2010-12-15 16:34:40.000000000 +0100
@@ -64,6 +64,9 @@
      */
     public function loadByQuery(Mage_Core_Model_Abstract $object, $value)
     {
+        $startCategory = 2227;
+        $searchCategory = Mage::app()->getRequest()->getParam('cat');
+        if($searchCategory == $startCategory) {
         $select = $this->_getReadAdapter()->select()
             ->from($this->getMainTable())
             ->where('synonym_for=?', $value)
@@ -74,6 +77,7 @@
             $object->setData($data);
             $this->_afterLoad($object);
         }
+        }
 
         return $this;
     }

Links:
http://stackoverflow.com/questions/4273898/how-to-sort-a-category-list-array-alphabetically-in-magento

Do you like this page? Then support it. Please click the AD below and visit the sponsor. Thank you!