&$row) { switch ($row['type']) { case 'Product': $page = Qs_SiteMap::findFirst( array(), array('type' => 'Product_'), array('type' => $row['idProductType'])); $row['url'] = $page['url'] . '/' . $row['id']; $row['title'] = $row['name']; break; default: break; } Qs_Text_Mark::setWordSplitters(array()); if ($row['introduction']) { $row['searchContent'] = $row['introduction'] . ' | ' . $row['searchContent']; } $row['searchContent'] = Qs_Text_Mark::markSearchWords($row['searchContent'], trim($_REQUEST['query'])); $row['title'] = Qs_Text_Mark::markSearchWords($row['title'], trim($_REQUEST['query'])); } return true; } public function getListSelect($options = array()) { $query = $this->_filter['query']; $productSelect = $this->_db->select() ->from($this->_getPair('Product', false), array('id', 'idProductType', 'name', 'introduction', 'searchContent', 'image', 'type' => new Zend_Db_Expr('"Product"'))); $anyWordResultProduct = clone $productSelect; $simpleResultProduct = clone $productSelect; Qs_Db_Filter::match($productSelect, $this->_filterFields, $query, true); Qs_Db_Filter::match($anyWordResultProduct, $this->_filterFields, $query); Qs_Db_Filter::where($simpleResultProduct, $this->_filterFields, $query); $this->select->reset()->union(array( $productSelect, $anyWordResultProduct, $simpleResultProduct, )); $this->_prepareListOptions($options); return $this->select; } public function getList($options = array()) { $stmt = $this->getListStatement($options); $list = $stmt->fetchAll(); $this->_prepareList($list); if (is_array($list) && count($list)) { $session = new Qs_Session_Namespace('JC_SEARCH'); $session->flagContent = true; } return $list; } public function getPaginatorAdapter() { $select = $this->_getSelect()->reset(Zend_Db_Select::LIMIT_COUNT)->reset(Zend_Db_Select::LIMIT_OFFSET); return $select; } protected function _filterWhere(Zend_Db_Select $select) { if (!empty($this->_filterFields) && array_key_exists('query', $this->_filter)) { Qs_Db_Filter::where($select, $this->_filterFields, $this->_filter['query']); } return $select; } }