From a41250325bc7381bef4c46118709d5492744d346 Mon Sep 17 00:00:00 2001 From: Yuriy Hamulevych Date: Wed, 15 Sep 2021 09:32:25 +0300 Subject: [PATCH] 5564-Sitemap-Query-Amasty --- Model/Sitemap.php | 2 +- Plugin/Magento/Sitemap/SitemapPlugin.php | 40 +++++++++++++++++------- etc/di.xml | 5 +++ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/Model/Sitemap.php b/Model/Sitemap.php index e245d9cb..c2ff36ad 100755 --- a/Model/Sitemap.php +++ b/Model/Sitemap.php @@ -135,7 +135,7 @@ public function save() */ public function getSitemapPath(): string { - $path = $this->getData('sitemap_path'); + $path = (string)$this->getData('sitemap_path'); if ($serverPath = $this->getServerPath()) { if (!$this->_directory->isDirectory($serverPath)) { $serverPath = BP . '/' . $serverPath; diff --git a/Plugin/Magento/Sitemap/SitemapPlugin.php b/Plugin/Magento/Sitemap/SitemapPlugin.php index 8e5ab2dd..46089ec6 100644 --- a/Plugin/Magento/Sitemap/SitemapPlugin.php +++ b/Plugin/Magento/Sitemap/SitemapPlugin.php @@ -75,24 +75,40 @@ public function __construct( public function afterGenerateXml(\Magento\Framework\Model\AbstractModel $sitemap, $result) { if ($this->isEnabled($sitemap)) { - /* if ($this->isMageWorxXmlSitemap($sitemap) || !method_exists($sitemap, 'collectSitemapItems')) { */ - $sitemapId = $sitemap->getId() ?: 0; + $sitemapId = $sitemap->getId() ?: 0; if (in_array($sitemapId, $this->generated)) { return $result; } - $this->generated[] = $sitemapId; + $this->generated[] = $sitemapId; - $blogSitemap = $this->sitemapFactory->create(); - $blogSitemap->setData( - $sitemap->getData() - ); + $blogSitemap = $this->sitemapFactory->create(); + $blogSitemap->setData( + $sitemap->getData() + ); - $blogSitemap->setSitemapFilename( - 'blog_' . $sitemap->getSitemapFilename() - ); + if (!$blogSitemap->getSitemapId() && $sitemap->getId()) { + $blogSitemap->setSitemapId($sitemap->getId()); + } + + /* Fix for Amasty\XmlSitemap\Model\Sitemap */ + if ($sitemap->getFolderName()) { + $filename = pathinfo($sitemap->getFolderName()); + if (!$blogSitemap->getSitemapFilename()) { + if (isset($filename['basename'])) { + $blogSitemap->setSitemapFilename($filename['basename']); + } + } + if (!$blogSitemap->getSitemapPath()) { + if (isset($filename['dirname'])) { + $blogSitemap->setSitemapPath($filename['dirname']); + } + } + } - $blogSitemap->generateXml(); - /* } */ + $blogSitemap->setSitemapFilename( + 'blog_' . $blogSitemap->getSitemapFilename() + ); + $blogSitemap->generateXml(); } return $result; } diff --git a/etc/di.xml b/etc/di.xml index e7a9ce31..29a28b29 100755 --- a/etc/di.xml +++ b/etc/di.xml @@ -60,6 +60,11 @@ type="Magefan\Blog\Plugin\Magento\Sitemap\SitemapPlugin" sortOrder="10"/> + + + +