diff --git a/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrl.php b/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrl.php new file mode 100644 index 0000000000000..11a2d585d8da6 --- /dev/null +++ b/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrl.php @@ -0,0 +1,57 @@ +itemFactory = $itemFactory; + $this->configReader = $configReader; + } + + /** + * @inheritdoc + */ + public function getItems($storeId) + { + $items[] = $this->itemFactory->create([ + 'url' => '', + 'priority' => $this->configReader->getPriority($storeId), + 'changeFrequency' => $this->configReader->getChangeFrequency($storeId), + ]); + + return $items; + } +} diff --git a/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrlConfigReader.php b/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrlConfigReader.php new file mode 100644 index 0000000000000..b18dd73fb2836 --- /dev/null +++ b/app/code/Magento/Sitemap/Model/ItemProvider/StoreUrlConfigReader.php @@ -0,0 +1,64 @@ +scopeConfig = $scopeConfig; + } + + /** + * @inheritdoc + */ + public function getPriority($storeId) + { + return (string)$this->scopeConfig->getValue( + self::XML_PATH_PRIORITY, + ScopeInterface::SCOPE_STORE, + $storeId + ); + } + + /** + * @inheritdoc + */ + public function getChangeFrequency($storeId) + { + return (string)$this->scopeConfig->getValue( + self::XML_PATH_CHANGE_FREQUENCY, + ScopeInterface::SCOPE_STORE, + $storeId + ); + } +} diff --git a/app/code/Magento/Sitemap/Test/Unit/Model/ItemProvider/StoreUrlTest.php b/app/code/Magento/Sitemap/Test/Unit/Model/ItemProvider/StoreUrlTest.php new file mode 100644 index 0000000000000..0edfd253f0c1d --- /dev/null +++ b/app/code/Magento/Sitemap/Test/Unit/Model/ItemProvider/StoreUrlTest.php @@ -0,0 +1,72 @@ +getConfigReaderMock(); + $itemFactoryMock = $this->getItemFactoryMock(); + $resolver = new StoreUrlItemResolver($configReaderMock, $itemFactoryMock); + $items = $resolver->getItems(1); + + $this->assertCount(1, $items); + foreach ($items as $item) { + $this->assertSame('daily', $item->getChangeFrequency()); + $this->assertSame('1.0', $item->getPriority()); + } + } + + /** + * @return SitemapItemInterfaceFactory|MockObject + */ + private function getItemFactoryMock() + { + $itemFactoryMock = $this->getMockBuilder(SitemapItemInterfaceFactory::class) + ->setMethods(['create']) + ->disableOriginalConstructor() + ->getMock(); + + $itemFactoryMock->expects($this->any()) + ->method('create') + ->willReturnCallback(function ($data) { + $helper = new ObjectManager($this); + + return $helper->getObject(SitemapItem::class, $data); + }); + + return $itemFactoryMock; + } + + /** + * @return ConfigReaderInterface|MockObject + */ + private function getConfigReaderMock() + { + $configReaderMock = $this->getMockForAbstractClass(ConfigReaderInterface::class); + $configReaderMock->expects($this->any()) + ->method('getPriority') + ->willReturn('1.0'); + $configReaderMock->expects($this->any()) + ->method('getChangeFrequency') + ->willReturn('daily'); + + return $configReaderMock; + } +} diff --git a/app/code/Magento/Sitemap/etc/adminhtml/system.xml b/app/code/Magento/Sitemap/etc/adminhtml/system.xml index 57c426c68e83f..8814d7dcf67bd 100644 --- a/app/code/Magento/Sitemap/etc/adminhtml/system.xml +++ b/app/code/Magento/Sitemap/etc/adminhtml/system.xml @@ -51,7 +51,19 @@ Valid values range from 0.0 to 1.0. - + + + + + Magento\Sitemap\Model\Config\Source\Frequency + + + + Magento\Sitemap\Model\Config\Backend\Priority + Valid values range from 0.0 to 1.0. + + + @@ -94,7 +106,7 @@ - + @@ -106,7 +118,7 @@ validate-number validate-greater-than-zero - + diff --git a/app/code/Magento/Sitemap/etc/config.xml b/app/code/Magento/Sitemap/etc/config.xml index 6f14ff728ac4f..36b2cc2207422 100644 --- a/app/code/Magento/Sitemap/etc/config.xml +++ b/app/code/Magento/Sitemap/etc/config.xml @@ -25,6 +25,10 @@ daily all + + 1 + daily + 0 diff --git a/app/code/Magento/Sitemap/etc/di.xml b/app/code/Magento/Sitemap/etc/di.xml index e627b3b50fff9..4c4a5f98f737a 100644 --- a/app/code/Magento/Sitemap/etc/di.xml +++ b/app/code/Magento/Sitemap/etc/di.xml @@ -25,12 +25,18 @@ + Magento\Sitemap\Model\ItemProvider\StoreUrl Magento\Sitemap\Model\ItemProvider\Category Magento\Sitemap\Model\ItemProvider\CmsPage Magento\Sitemap\Model\ItemProvider\Product + + + Magento\Sitemap\Model\ItemProvider\StoreUrlConfigReader + + Magento\Sitemap\Model\ItemProvider\CategoryConfigReader diff --git a/app/code/Magento/Sitemap/i18n/en_US.csv b/app/code/Magento/Sitemap/i18n/en_US.csv index 29ecd7e22773e..8a7ac86e2fb47 100644 --- a/app/code/Magento/Sitemap/i18n/en_US.csv +++ b/app/code/Magento/Sitemap/i18n/en_US.csv @@ -64,3 +64,4 @@ ID,ID "Link for Google","Link for Google" "Last Generated","Last Generated" Action,Action +"Store Url Options","Store Url Options"