/**
  * Renders the complete facet.
  *
  * @return string Rendered HTML representing the facet.
  */
 public function renderFacetOptions()
 {
     $facetOptionLinks = array();
     $solrConfiguration = 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 = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Facet\\FacetOption', $this->facetName, $facetOption, $facetOptionResultCount);
         /* @var $facetOption FacetOption */
         $facetLinkBuilder = GeneralUtility::makeInstance('ApacheSolrForTypo3\\Solr\\Facet\\LinkBuilder', $this->query, $this->facetName, $facetOption);
         /* @var $facetLinkBuilder 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();
 }
Example #2
0
 /**
  * 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();
 }