getFacet(); $facet_source_id = $facet->getFacetSourceId(); $facet_manager = \Drupal::service('facets.manager'); $facets = $facet_manager->getFacetsByFacetSourceId($facet_source_id); $raw_value = $result->getRawValue(); $count = $result->getCount(); $url = $result->getUrl(); $exclude_facet = $this->getExcludeFacet($facet, $facets); $exclude_result = $this->getExcludeResult($exclude_facet, $raw_value); $exclude_url = $exclude_result ? $exclude_result->getUrl() : NULL; return [ '#theme' => 'facets_result_item', '#is_active' => $result->isActive(), '#value' => [ 'text' => (new Link($result->getDisplayValue(), $url))->toRenderable(), 'include' => (new Link(' ', $url))->toRenderable() + [ '#attributes' => [ 'class' => ['facet-item__include', 'fa', 'fa-plus'], ], ], 'exclude' => $exclude_url ? (new Link(' ', $exclude_url))->toRenderable() + [ '#attributes' => [ 'class' => ['facet-item__exclude', 'fa', 'fa-minus'], ], ] : NULL, ], '#show_count' => $this->getConfiguration()['show_numbers'] && ($count !== NULL), '#count' => $count, '#facet' => $facet, '#raw_value' => $raw_value, ]; } /** * Looks for the excluded facet version of the included facet. */ protected function getExcludeResult($facet, $raw_value) { if ($facet) { foreach ($facet->getResults() as $result) { if ($result->getRawValue() === $raw_value) { return $result; } } } return NULL; } /** * Looks for the excluded facet version of the included facet. */ protected function getExcludeFacet($include, $facets) { $field_identifier = $include->getFieldIdentifier(); foreach ($facets as $facet) { if ($field_identifier === $facet->getFieldIdentifier() && $facet->getExclude()) { return $facet; } } return NULL; } }