/** * Renders the complete facet. * * @see Tx_Solr_FacetRenderer::render() * @return string Rendered HTML representing the facet. */ public function renderFacetOptions() { $facetOptionLinks = array(); $solrConfiguration = Tx_Solr_Util::getSolrConfiguration(); $this->template->workOnSubpart('single_facet_option'); if (!empty($this->facetConfiguration['manualSortOrder'])) { $this->sortFacetOptionsByUserDefinedOrder(); } if (!empty($this->facetConfiguration['reverseOrder'])) { $this->facetOptions = array_reverse($this->facetOptions, true); } $i = 0; foreach ($this->facetOptions as $facetOption => $facetOptionResultCount) { $facetOption = (string) $facetOption; if ($facetOption == '_empty_') { // TODO - for now we don't handle facet missing. continue; } $facetOption = t3lib_div::makeInstance('Tx_Solr_Facet_FacetOption', $this->facetName, $facetOption, $facetOptionResultCount); /* @var $facetOption Tx_Solr_Facet_FacetOption */ $facetLinkBuilder = t3lib_div::makeInstance('Tx_Solr_Facet_LinkBuilder', $this->query, $this->facetName, $facetOption); /* @var $facetLinkBuilder Tx_Solr_Facet_LinkBuilder */ $facetLinkBuilder->setLinkTargetPageId($this->linkTargetPageId); $optionText = $facetOption->render(); $optionLink = $facetLinkBuilder->getAddFacetOptionLink($optionText); $optionLinkUrl = $facetLinkBuilder->getAddFacetOptionUrl(); $optionHidden = ''; if (++$i > $solrConfiguration['search.']['faceting.']['limit']) { $optionHidden = 'tx-solr-facet-hidden'; } $optionSelected = $facetOption->isSelectedInFacet($this->facetName); // negating the facet option links to remove a filter if ($this->facetConfiguration['selectingSelectedFacetOptionRemovesFilter'] && $optionSelected) { $optionLink = $facetLinkBuilder->getRemoveFacetOptionLink($optionText); $optionLinkUrl = $facetLinkBuilder->getRemoveFacetOptionUrl(); } elseif ($this->facetConfiguration['singleOptionMode']) { $optionLink = $facetLinkBuilder->getReplaceFacetOptionLink($optionText); $optionLinkUrl = $facetLinkBuilder->getReplaceFacetOptionUrl(); } $facetOptionLinks[] = array('hidden' => $optionHidden, 'link' => $optionLink, 'url' => $optionLinkUrl, 'text' => $optionText, 'value' => $facetOption->getValue(), 'count' => $facetOption->getNumberOfResults(), 'selected' => $optionSelected ? '1' : '0', 'facet_name' => $this->facetName); } $this->template->addLoop('facet_links', 'facet_link', $facetOptionLinks); return $this->template->render(); }
/** * Renders a solr exception. * * @return string A representation of the exception that should be understandable for the user. */ protected function renderException() { $this->template->workOnSubpart('solr_search_error'); return $this->template->render(); }