You are here

public function SitemapWriter::writeXsl in Simple XML sitemap 4.x

Same name and namespace in other branches
  1. 8.3 src/Plugin/simple_sitemap/SitemapGenerator/SitemapWriter.php \Drupal\simple_sitemap\Plugin\simple_sitemap\SitemapGenerator\SitemapWriter::writeXsl()

Adds the XML stylesheet to the XML page.

File

src/Plugin/simple_sitemap/SitemapGenerator/SitemapWriter.php, line 28

Class

SitemapWriter
Class SitemapWriter

Namespace

Drupal\simple_sitemap\Plugin\simple_sitemap\SitemapGenerator

Code

public function writeXsl() : void {

  // Using this instead of URL::fromRoute() to avoid creating a path with the
  // subdomain from which creation was triggered which might lead to a CORS
  // problem. See https://www.drupal.org/project/simple_sitemap/issues/3131672.
  $xsl_url = $this->routeProvider
    ->getRouteByName('simple_sitemap.sitemap_xsl')
    ->getPath();

  // The above workaround however generates an incorrect path when the site is
  // located in a subdirectory, which is why the following logic adds the base
  // path of the installation.
  // See https://www.drupal.org/project/simple_sitemap/issues/3154494.
  // All of this seems to be an over engineered way of writing 'sitemap.xsl',
  // but may be useful in cases where another module alters the routes.
  $xsl_url = base_path() . ltrim($xsl_url, '/');
  $this
    ->writePI('xml-stylesheet', 'type="text/xsl" href="' . $xsl_url . '"');
}