From 817aae8dd16edc576e54f6122d0362ddc1d121ff Mon Sep 17 00:00:00 2001 From: Pawel G Date: Wed, 1 May 2019 17:17:39 +0200 Subject: [PATCH] Issue #3051700 by jansete, gbyte.co: Use core Url class to generate index page links --- .../SitemapGenerator/SitemapGeneratorBase.php | 15 +++++++++++---- tests/src/Functional/SimplesitemapTest.php | 3 ++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Plugin/simple_sitemap/SitemapGenerator/SitemapGeneratorBase.php b/src/Plugin/simple_sitemap/SitemapGenerator/SitemapGeneratorBase.php index 5e6fee1..d05770a 100644 --- a/src/Plugin/simple_sitemap/SitemapGenerator/SitemapGeneratorBase.php +++ b/src/Plugin/simple_sitemap/SitemapGenerator/SitemapGeneratorBase.php @@ -2,6 +2,7 @@ namespace Drupal\simple_sitemap\Plugin\simple_sitemap\SitemapGenerator; +use Drupal\Core\Url; use Drupal\simple_sitemap\Plugin\simple_sitemap\SimplesitemapPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Database\Connection; @@ -164,8 +165,13 @@ abstract class SitemapGeneratorBase extends SimplesitemapPluginBase implements S // Add sitemap chunk locations to document. foreach ($chunk_info as $chunk_data) { $this->writer->startElement('sitemap'); - $this->writer->writeElement('loc', $this->getCustomBaseUrl() - . '/' . (!$this->isDefaultVariant() ? ($chunk_data->type . '/') : '') . 'sitemap.xml?page=' . $chunk_data->delta); + + // Build the URL from route to be able to show potentially aliased paths. + $url = $this->isDefaultVariant() + ? Url::fromRoute('simple_sitemap.sitemap_default', ['page' => $chunk_data->delta]) + : Url::fromRoute('simple_sitemap.sitemap_variant', ['variant' => $chunk_data->type, 'page' => $chunk_data->delta]); + + $this->writer->writeElement('loc', $this->getCustomBaseUrl() . $url->toString(TRUE)->getGeneratedUrl()); $this->writer->writeElement('lastmod', date('c', $chunk_data->sitemap_created)); $this->writer->endElement(); } @@ -272,8 +278,9 @@ abstract class SitemapGeneratorBase extends SimplesitemapPluginBase implements S * @return $this */ public function publish() { - $unpublished_chunk = $this->db->query('SELECT MAX(id) FROM {simple_sitemap} WHERE type = :type AND status = :status', [':type' => $this->sitemapVariant, ':status' => 0]) - ->fetchField(); + $unpublished_chunk = $this->db->query('SELECT MAX(id) FROM {simple_sitemap} WHERE type = :type AND status = :status', [ + ':type' => $this->sitemapVariant, ':status' => 0 + ])->fetchField(); // Only allow publishing a sitemap variant if there is an unpublished // sitemap variant, as publishing involves deleting the currently published diff --git a/tests/src/Functional/SimplesitemapTest.php b/tests/src/Functional/SimplesitemapTest.php index d8c54be..16a18b3 100644 --- a/tests/src/Functional/SimplesitemapTest.php +++ b/tests/src/Functional/SimplesitemapTest.php @@ -307,7 +307,8 @@ class SimplesitemapTest extends SimplesitemapTestBase { ->generateSitemap('backend'); $this->drupalGet($this->defaultSitemapUrl); - $this->assertSession()->responseContains('http://base_url_test/sitemap.xml?page=1'); + $url = Url::fromRoute('simple_sitemap.sitemap_default', ['page' => 1]); + $this->assertSession()->responseContains('http://base_url_test' . $url->toString()); } /** -- GitLab