EntityReferenceTaxonomyTermRssFormatter.php

Same filename in other branches
  1. 8.9.x core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php
  2. 10 core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php
  3. 11.x core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php

Namespace

Drupal\taxonomy\Plugin\Field\FieldFormatter

File

core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php

View source
<?php

namespace Drupal\taxonomy\Plugin\Field\FieldFormatter;

use Drupal\Core\Url;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase;

/**
 * Plugin implementation of the 'entity reference taxonomy term RSS' formatter.
 *
 * @FieldFormatter(
 *   id = "entity_reference_rss_category",
 *   label = @Translation("RSS category"),
 *   description = @Translation("Display reference to taxonomy term in RSS."),
 *   field_types = {
 *     "entity_reference"
 *   }
 * )
 */
class EntityReferenceTaxonomyTermRssFormatter extends EntityReferenceFormatterBase {
    
    /**
     * {@inheritdoc}
     */
    public function viewElements(FieldItemListInterface $items, $langcode) {
        $parent_entity = $items->getEntity();
        $elements = [];
        foreach ($this->getEntitiesToView($items, $langcode) as $entity) {
            $parent_entity->rss_elements[] = [
                'key' => 'category',
                'value' => $entity->label(),
                'attributes' => [
                    'domain' => $entity->id() ? Url::fromRoute('entity.taxonomy_term.canonical', [
                        'taxonomy_term' => $entity->id(),
                    ], [
                        'absolute' => TRUE,
                    ])
                        ->toString() : '',
                ],
            ];
        }
        return $elements;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function isApplicable(FieldDefinitionInterface $field_definition) {
        // This formatter is only available for taxonomy terms.
        return $field_definition->getFieldStorageDefinition()
            ->getSetting('target_type') == 'taxonomy_term';
    }

}

Classes

Title Deprecated Summary
EntityReferenceTaxonomyTermRssFormatter Plugin implementation of the 'entity reference taxonomy term RSS' formatter.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.