_select) { $this->addFilter([ 'system' => 'n', 'redirect' => 'n', 'enabled' => 'y', 'isIndexing' => 'y', 'handler' => 'site', ]); $language = $this->getLanguage(); $defaultLanguage = Qs_Language::getDefault(); $this->_select = $this->_db->select(); $this->_select->from($this->_getPair($this->_tableAlias), '*'); $this->_select->where("`{$this->_tableAlias}`.`alias` IS NOT NULL"); $where = '`PageContentDefault`.`idPage` = `' . $this->_tableAlias . '`.`id` ' . 'AND `PageContentDefault`.`language` = ' . $this->_db->quote($defaultLanguage); $this->_select->join( $this->_getPair('PageContent', 'PageContentDefault'), $where, [ 'menuTitle' => 'IFNULL(`PageContent`.`menuTitle`, `PageContentDefault`.`menuTitle`)', 'header' => 'IFNULL(`PageContent`.`header`, `PageContentDefault`.`header`)', 'title' => 'IFNULL(`PageContent`.`title`, `PageContentDefault`.`title`)', ] ); $where = '`PageContent`.`idPage` = `' . $this->_tableAlias . '`.`id` ' . 'AND `PageContent`.`language` = ' . $this->_db->quote($language); $this->_select->joinLeft($this->_getPair('PageContent'), $where, []); $this->_select->joinLeft( $this->_getPair('PageItem'), '`PageItem`.`idPage` = `' . $this->_tableAlias . '`.`id`', [] ); $where = '`HtmlBlockContentDefault`.`idBlock` = `PageItem`.`number` ' . 'AND `HtmlBlockContentDefault`.`language` = ' . $this->_db->quote($defaultLanguage); $this->_select->joinLeft( $this->_getPair('HtmlBlockContent', 'HtmlBlockContentDefault'), $where, ['rawContent' => 'IFNULL(`HtmlBlockContent`.`rawContent`, `HtmlBlockContentDefault`.`rawContent`)'] ); $where = '`HtmlBlockContent`.`idBlock` = `PageItem`.`number` ' . 'AND `HtmlBlockContent`.`language` = ' . $this->_db->quote($language); $this->_select->joinLeft($this->_getPair('HtmlBlockContent'), $where, []); $this->_select->group($this->_tableAlias . '.id'); $this->_filter($this->_select); $this->_applySelectOptions($this->_select, $this->_selectOptions); $this->_select->reset(Zend_Db_Select::ORDER); $this->_select->order('PageContent.menuTitle ASC'); } return $this->_select; } protected function _buildSearchUrl($pattern, array $data) { $dataObj = App_Cms_Obj::getInstance(); $page = $dataObj->getPageById($data['id']); return $page['url']; } protected function _prepareSearchList(array &$list, array $providerOptions) { $filterFields = $this->getFilterFields(); $flatFilterFields = Qs_Array::flatten($filterFields); $titleField = Qs_Array::get($providerOptions, 'titleField', App\Search\View::DEFAULT_TITLE_FIELD); $flatFilterFields = Qs_Array::excludeValue($flatFilterFields, $titleField); $flatFilterFields = Qs_Array::excludeValue($flatFilterFields, 'header'); $this->setFilterFields($flatFilterFields); parent::_prepareSearchList($list, $providerOptions); $query = $this->_filter['query']; foreach ($list as &$item) { if ($item['header']) { $header = Qs_Text_Mark::markSearchWords($item['header'], $query); $header = trim($header, '.'); $item['content'] = '' . $header . '
' . $item['content']; } } $this->setFilterFields($filterFields); return $this; } }