You are here

public function SitemapController::buildSitemap in Sitemap 2.0.x

Same name and namespace in other branches
  1. 8.2 src/Controller/SitemapController.php \Drupal\sitemap\Controller\SitemapController::buildSitemap()

Controller for /sitemap.

Return value

array Renderable array.

1 string reference to 'SitemapController::buildSitemap'
sitemap.routing.yml in ./sitemap.routing.yml
sitemap.routing.yml

File

src/Controller/SitemapController.php, line 58

Class

SitemapController
Controller routines for update routes.

Namespace

Drupal\sitemap\Controller

Code

public function buildSitemap() {
  $config = $this->configFactory
    ->get('sitemap.settings');

  // Build the Sitemap message.
  $message = '';
  if (!empty($config
    ->get('message')) && !empty($config
    ->get('message')['value'])) {
    $message = check_markup($config
      ->get('message')['value'], $config
      ->get('message')['format']);
  }

  // Build the plugin content.
  $plugins_config = $config
    ->get('plugins');
  $plugins = [];
  $plugin_config = [];
  $definitions = $this->sitemapManager
    ->getDefinitions();
  foreach ($definitions as $id => $definition) {
    if ($this->sitemapManager
      ->hasDefinition($id)) {
      if (!empty($plugins_config[$id])) {
        $plugin_config = $plugins_config[$id];
      }
      $instance = $this->sitemapManager
        ->createInstance($id, $plugin_config);
      if ($instance->enabled) {

        // TODO: Order by $instance->weight

        //$plugins[$instance->weight] = $instance->view();
        $plugins[] = $instance
          ->view();
      }
    }
  }

  // Build the render array.
  $sitemap = [
    '#theme' => 'sitemap',
    '#message' => $message,
    '#sitemap_items' => $plugins,
  ];

  // Check whether to include the default CSS.
  if ($config
    ->get('include_css') == 1) {
    $sitemap['#attached']['library'] = [
      'sitemap/sitemap.theme',
    ];
  }
  return $sitemap;
}