You are here

public function SmartReadMoreLinkFormatter::viewElements in Smart read more link 8

View elements.

@inheritdoc

Overrides FormatterInterface::viewElements

File

src/Plugin/Field/FieldFormatter/SmartReadMoreLinkFormatter.php, line 120

Class

SmartReadMoreLinkFormatter
Plugin implementation of the 'Random_default' formatter.

Namespace

Drupal\smart_read_more_link\Plugin\Field\FieldFormatter

Code

public function viewElements(FieldItemListInterface $items, $langcode) {
  $elements = $this->summaryFormatter
    ->viewElements($items, $langcode);
  $defaults = $this->defaultFormatter
    ->viewElements($items, $langcode);
  $elements_copy = $elements;
  $elementsMarkup = $this->renderer
    ->render($elements_copy);
  $defaultsMarkup = $this->renderer
    ->render($defaults);
  $readMore = (string) $elementsMarkup !== (string) $defaultsMarkup;
  if ($readMore) {
    $entity = $items
      ->getEntity();
    $node_title_stripped = strip_tags($entity
      ->label());
    $links['body-readmore'] = [
      'title' => $this
        ->t('Read more<span class="visually-hidden"> about @title</span>', [
        '@title' => $node_title_stripped,
      ]),
      'url' => $entity
        ->toUrl(),
      'language' => $entity
        ->language(),
      'attributes' => [
        'rel' => 'tag',
        'title' => $node_title_stripped,
      ],
    ];
    $elements[count($elements) - 1]['links'] = [
      '#theme' => 'links__node__node',
      '#links' => $links,
      '#attributes' => [
        'class' => [
          'links',
          'inline',
        ],
      ],
    ];
  }
  return $elements;
}