You are here

public function Rss::render in Drupal 9

Same name in this branch
  1. 9 core/modules/views/src/Plugin/views/style/Rss.php \Drupal\views\Plugin\views\style\Rss::render()
  2. 9 core/modules/node/src/Plugin/views/row/Rss.php \Drupal\node\Plugin\views\row\Rss::render()
  3. 9 core/modules/comment/src/Plugin/views/row/Rss.php \Drupal\comment\Plugin\views\row\Rss::render()
  4. 9 core/modules/aggregator/src/Plugin/views/row/Rss.php \Drupal\aggregator\Plugin\views\row\Rss::render()
Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/style/Rss.php \Drupal\views\Plugin\views\style\Rss::render()

Render the display in this style.

Overrides StylePluginBase::render

File

core/modules/views/src/Plugin/views/style/Rss.php, line 99

Class

Rss
Default style plugin to render an RSS feed.

Namespace

Drupal\views\Plugin\views\style

Code

public function render() {
  if (empty($this->view->rowPlugin)) {
    trigger_error('Drupal\\views\\Plugin\\views\\style\\Rss: Missing row plugin', E_WARNING);
    return [];
  }
  $rows = [];

  // This will be filled in by the row plugin and is used later on in the
  // theming output.
  $this->namespaces = [
    'xmlns:dc' => 'http://purl.org/dc/elements/1.1/',
  ];

  // Fetch any additional elements for the channel and merge in their
  // namespaces.
  $this->channel_elements = $this
    ->getChannelElements();
  foreach ($this->channel_elements as $element) {
    if (isset($element['namespace'])) {
      $this->namespaces = array_merge($this->namespaces, $element['namespace']);
    }
  }
  foreach ($this->view->result as $row_index => $row) {
    $this->view->row_index = $row_index;
    $rows[] = $this->view->rowPlugin
      ->render($row);
  }
  $build = [
    '#theme' => $this
      ->themeFunctions(),
    '#view' => $this->view,
    '#options' => $this->options,
    '#rows' => $rows,
  ];
  unset($this->view->row_index);
  return $build;
}