| 
       magento 搜索自动完成 
	 
	 
	一:base\default\template\catalogsearch  form.mini.phtml 
	<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 store here...') ?>'); 
	searchForm.initAutocomplete('<?php echo $catalogSearchHelper->getSuggestUrl() ?>', 'search_autocomplete'); 
	//]]> 
	</script> 
	二:提交到croller  app\code\core\Mage\CatalogSearch\controllers   AjaxController.php 
	/** 
	* Catalog Search Controller 
	* 
	* @category Mage 
	* @package Mage_CatalogSearch 
	* @module Catalog 
	*/ 
	class Mage_CatalogSearch_AjaxController extends Mage_Core_Controller_Front_Action 
	{ 
	public function suggestAction() 
	{ 
	if (!$this->getRequest()->getParam('q', false)) { 
	$this->getResponse()->setRedirect(Mage::getSingleton('core/url')->getBaseUrl()); 
	} 
	$this->getResponse()->setBody($this->getLayout()->createBlock('catalogsearch/autocomplete')->toHtml()); 
	} 
	} 
	三: block 数据处理返回 app\code\core\Mage\CatalogSearch\Block Autocomplete.php 
	/** 
	* Autocomplete queries list 
	*/ 
	class Mage_CatalogSearch_Block_Autocomplete extends Mage_Core_Block_Abstract 
	{ 
	protected $_suggestData = null; 
	protected function _toHtml() 
	{ 
	$query = $this->helper('catalogsearch')->getQueryText(); 
	$html = ''; 
	if (!$this->_beforeToHtml()) { 
	return $html; 
	} 
	$suggestData = $this->getSuggestData(); 
	if (!($count = count($suggestData))) { 
	return $html; 
	} 
	$count--; 
	$html = '<ul><li style="display:none"></li>'; 
	foreach ($suggestData as $index => $item) { 
	if ($index == 0) { 
	$item['row_class'] .= ' first'; 
	} 
	if ($index == $count) { 
	$item['row_class'] .= ' last'; 
	} 
	$html .= '<li title="'.$this->htmlEscape($item['title']).'" class="'.$item['row_class'].'"><a href="'.$item['link'].'"><span class="title">' 
	.$item['title'] . '</span><span class="amount">'.$item['num_of_results'].'</span></a></li>'; 
	} 
	$html.= '</ul>'; 
	return $html; 
	} 
	public function getSuggestData() 
	{ 
	if (!$this->_suggestData) { 
	$productTable = Mage::getSingleton('core/resource')->getTableName('catalog/category_product'); 
	$query = $this->helper('catalogsearch')->getQueryText(); 
	$collection = Mage::getResourceModel('catalog/category_collection') 
	->setStore(Mage::app()->getStore()) 
	->addAttributeToSelect('name') 
	->addAttributeToSelect('url_key') 
	->addFieldToFilter('is_active', 1); 
	$counter = 0; 
	$data = array(); 
	foreach ($collection as $item) { 
	$_data = array( 
	'title' => $this->getCategoryName($item), 
	'row_class' => (++$counter)%2?'odd':'even', 
	'link' => $item->getUrl(), 
	'num_of_results' => $this->__('%d products',$item->getProductCount()) 
	); 
	if ($item->getName() == $query) { 
	array_unshift($data, $_data); 
	} 
	else { 
	$data[] = $_data; 
	} 
	if ($counter > 8) break; 
	} 
	$this->_suggestData = $data; 
	} 
	return $this->_suggestData; 
	} 
	public function getCategoryName($category) 
	{ 
	$name = ''; 
	foreach(array_reverse($category->getParentCategories()) as $item){ 
	if($item->getLevel() == 1) break; 
	$name .= $item->getName().' '; 
	} 
	return $name; 
	} 
	} 
      
      (责任编辑:最模板) | 
    


