/** * Initializes the search component. * * Sets the sorting query parameters * */ public function initializeSearchComponent() { if (!empty($this->searchConfiguration['query.']['sortBy'])) { $this->query->addQueryParameter('sort', $this->searchConfiguration['query.']['sortBy']); } $solrGetParameters = \TYPO3\CMS\Core\Utility\GeneralUtility::_GET('tx_solr'); if (!empty($this->searchConfiguration['sorting']) && !empty($solrGetParameters['sort']) && preg_match('/^([a-z0-9_]+ (asc|desc)[, ]*)*([a-z0-9_]+ (asc|desc))+$/i', $solrGetParameters['sort'])) { $sortHelper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Tx_Solr_Sorting', $this->searchConfiguration['sorting.']['options.']); $sortField = $sortHelper->getSortFieldFromUrlParameter($solrGetParameters['sort']); $this->query->setSorting($sortField); } }
/** * Modifies the given query and adds the parameters necessary for faceted * search. * * @param Tx_Solr_Query The query to modify * @return Tx_Solr_Query The modified query with faceting parameters */ public function modifyQuery(Tx_Solr_Query $query) { $query->setFaceting(); $this->buildFacetingParameters(); $this->addFacetQueryFilters(); foreach ($this->facetParameters as $facetParameter => $value) { $query->addQueryParameter($facetParameter, $value); } foreach ($this->facetFilters as $filter) { $query->addFilter($filter); } return $query; }