Skip to content

Commit a53794d

Browse files
author
Oleksii Korshenko
committed
MAGETWO-70872: [WIP]Google Sitemap refactoring - introduce item resolver #10288
- Merge Pull Request #10288 from piotrkwiecinski/magento2:sitemap-item-resolver - Merged commits: 1. 9867aca 2. 9b25030 3. becd97c 4. d990c95 5. 79d15ad 6. 6c137a8 7. 4bc880b 8. 878e361 9. b6ddaa7 10. 9c65d50 11. f95bf7a 12. b251c7e 13. c4885c9 14. 458d45b
2 parents c955c32 + 458d45b commit a53794d

28 files changed

+1997
-519
lines changed

app/code/Magento/Sitemap/Helper/Data.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,15 @@
1010
*/
1111
namespace Magento\Sitemap\Helper;
1212

13+
use Magento\Sitemap\Model\ItemResolver\CategoryConfigReader;
14+
use Magento\Sitemap\Model\ItemResolver\CmsPageConfigReader;
15+
use Magento\Sitemap\Model\ItemResolver\ProductConfigReader;
16+
use Magento\Sitemap\Model\SitemapConfigReader;
1317
use Magento\Store\Model\ScopeInterface;
1418

19+
/**
20+
* @deprecated
21+
*/
1522
class Data extends \Magento\Framework\App\Helper\AbstractHelper
1623
{
1724
/**
@@ -68,6 +75,8 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
6875
*
6976
* @param int $storeId
7077
* @return int
78+
* @deprecated
79+
* @see SitemapConfigReader::getMaximumLinesNumber()
7180
*/
7281
public function getMaximumLinesNumber($storeId)
7382
{
@@ -83,6 +92,8 @@ public function getMaximumLinesNumber($storeId)
8392
*
8493
* @param int $storeId
8594
* @return int
95+
* @deprecated
96+
* @see SitemapConfigReader::getMaximumFileSize()
8697
*/
8798
public function getMaximumFileSize($storeId)
8899
{
@@ -98,6 +109,8 @@ public function getMaximumFileSize($storeId)
98109
*
99110
* @param int $storeId
100111
* @return string
112+
* @deprecated
113+
* @see CategoryConfigReader::getChangeFrequency()
101114
*/
102115
public function getCategoryChangefreq($storeId)
103116
{
@@ -113,6 +126,8 @@ public function getCategoryChangefreq($storeId)
113126
*
114127
* @param int $storeId
115128
* @return string
129+
* @deprecated
130+
* @see ProductConfigReader::getChangeFrequency()
116131
*/
117132
public function getProductChangefreq($storeId)
118133
{
@@ -128,6 +143,8 @@ public function getProductChangefreq($storeId)
128143
*
129144
* @param int $storeId
130145
* @return string
146+
* @deprecated
147+
* @see CmsPageConfigReader::getChangeFrequency()
131148
*/
132149
public function getPageChangefreq($storeId)
133150
{
@@ -143,6 +160,8 @@ public function getPageChangefreq($storeId)
143160
*
144161
* @param int $storeId
145162
* @return string
163+
* @deprecated
164+
* @see CategoryConfigReader::getPriority()
146165
*/
147166
public function getCategoryPriority($storeId)
148167
{
@@ -158,6 +177,8 @@ public function getCategoryPriority($storeId)
158177
*
159178
* @param int $storeId
160179
* @return string
180+
* @deprecated
181+
* @see ProductConfigReader::getPriority()
161182
*/
162183
public function getProductPriority($storeId)
163184
{
@@ -173,6 +194,8 @@ public function getProductPriority($storeId)
173194
*
174195
* @param int $storeId
175196
* @return string
197+
* @deprecated
198+
* @see CmsPageConfigReader::getPriority()
176199
*/
177200
public function getPagePriority($storeId)
178201
{
@@ -188,6 +211,8 @@ public function getPagePriority($storeId)
188211
*
189212
* @param int $storeId
190213
* @return int
214+
* @deprecated
215+
* @see SitemapConfigReader::getEnableSubmissionRobots()
191216
*/
192217
public function getEnableSubmissionRobots($storeId)
193218
{
@@ -203,6 +228,8 @@ public function getEnableSubmissionRobots($storeId)
203228
*
204229
* @param int $storeId
205230
* @return string
231+
* @deprecated
232+
* @see SitemapConfigReader::getProductImageIncludePolicy()
206233
*/
207234
public function getProductImageIncludePolicy($storeId)
208235
{
@@ -217,6 +244,8 @@ public function getProductImageIncludePolicy($storeId)
217244
* Get list valid paths for generate a sitemap XML file
218245
*
219246
* @return string[]
247+
* @deprecated
248+
* @see SitemapConfigReader::getValidPaths()
220249
*/
221250
public function getValidPaths()
222251
{
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Sitemap\Model\ItemResolver;
8+
9+
use Magento\Sitemap\Model\ResourceModel\Catalog\CategoryFactory;
10+
use Magento\Sitemap\Model\SitemapItemInterfaceFactory;
11+
12+
class Category implements ItemResolverInterface
13+
{
14+
/**
15+
* Category factory
16+
*
17+
* @var CategoryFactory
18+
*/
19+
private $categoryFactory;
20+
21+
/**
22+
* Sitemap item factory
23+
*
24+
* @var SitemapItemInterfaceFactory
25+
*/
26+
private $itemFactory;
27+
28+
/**
29+
* Config reader
30+
*
31+
* @var ConfigReaderInterface
32+
*/
33+
private $configReader;
34+
35+
/**
36+
* CategorySitemapItemResolver constructor.
37+
*
38+
* @param ConfigReaderInterface $configReader
39+
* @param CategoryFactory $categoryFactory
40+
* @param SitemapItemInterfaceFactory $itemFactory
41+
*/
42+
public function __construct(
43+
ConfigReaderInterface $configReader,
44+
CategoryFactory $categoryFactory,
45+
SitemapItemInterfaceFactory $itemFactory
46+
) {
47+
$this->categoryFactory = $categoryFactory;
48+
$this->itemFactory = $itemFactory;
49+
$this->configReader = $configReader;
50+
}
51+
52+
/**
53+
* {@inheritdoc}
54+
*/
55+
public function getItems($storeId)
56+
{
57+
$collection = $this->categoryFactory->create()
58+
->getCollection($storeId);
59+
60+
$items = array_map(function ($item) use ($storeId) {
61+
return $this->itemFactory->create([
62+
'url' => $item->getUrl(),
63+
'updatedAt' => $item->getUpdatedAt(),
64+
'images' => $item->getImages(),
65+
'priority' => $this->configReader->getPriority($storeId),
66+
'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
67+
]);
68+
}, $collection);
69+
70+
return $items;
71+
}
72+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Sitemap\Model\ItemResolver;
8+
9+
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Store\Model\ScopeInterface;
11+
12+
class CategoryConfigReader implements ConfigReaderInterface
13+
{
14+
/**#@+
15+
* Xpath config settings
16+
*/
17+
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/category/changefreq';
18+
const XML_PATH_PRIORITY = 'sitemap/category/priority';
19+
/**#@-*/
20+
21+
/**
22+
* Scope config
23+
*
24+
* @var ScopeConfigInterface
25+
*/
26+
private $scopeConfig;
27+
28+
/**
29+
* CategoryItemResolverConfigReader constructor.
30+
*
31+
* @param ScopeConfigInterface $scopeConfig
32+
*/
33+
public function __construct(ScopeConfigInterface $scopeConfig)
34+
{
35+
$this->scopeConfig = $scopeConfig;
36+
}
37+
38+
/**
39+
* {@inheritdoc}
40+
*/
41+
public function getPriority($storeId)
42+
{
43+
return (string)$this->scopeConfig->getValue(
44+
self::XML_PATH_PRIORITY,
45+
ScopeInterface::SCOPE_STORE,
46+
$storeId
47+
);
48+
}
49+
50+
/**
51+
* {@inheritdoc}
52+
*/
53+
public function getChangeFrequency($storeId)
54+
{
55+
return (string)$this->scopeConfig->getValue(
56+
self::XML_PATH_CHANGE_FREQUENCY,
57+
ScopeInterface::SCOPE_STORE,
58+
$storeId
59+
);
60+
}
61+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Sitemap\Model\ItemResolver;
8+
9+
use Magento\Sitemap\Model\ResourceModel\Cms\PageFactory;
10+
use Magento\Sitemap\Model\SitemapItemInterfaceFactory;
11+
12+
class CmsPage implements ItemResolverInterface
13+
{
14+
/**
15+
* Cms page factory
16+
*
17+
* @var PageFactory
18+
*/
19+
private $cmsPageFactory;
20+
21+
/**
22+
* Sitemap item factory
23+
*
24+
* @var SitemapItemInterfaceFactory
25+
*/
26+
private $itemFactory;
27+
28+
/**
29+
* Config reader
30+
*
31+
* @var ConfigReaderInterface
32+
*/
33+
private $configReader;
34+
35+
/**
36+
* CmsPage constructor.
37+
*
38+
* @param ConfigReaderInterface $configReader
39+
* @param PageFactory $cmsPageFactory
40+
* @param SitemapItemInterfaceFactory $itemFactory
41+
*/
42+
public function __construct(
43+
ConfigReaderInterface $configReader,
44+
PageFactory $cmsPageFactory,
45+
SitemapItemInterfaceFactory $itemFactory
46+
) {
47+
$this->cmsPageFactory = $cmsPageFactory;
48+
$this->itemFactory = $itemFactory;
49+
$this->configReader = $configReader;
50+
}
51+
52+
/**
53+
* {@inheritdoc}
54+
*/
55+
public function getItems($storeId)
56+
{
57+
$collection = $this->cmsPageFactory->create()->getCollection($storeId);
58+
$items = array_map(function ($item) use ($storeId) {
59+
return $this->itemFactory->create([
60+
'url' => $item->getUrl(),
61+
'updatedAt' => $item->getUpdatedAt(),
62+
'images' => $item->getImages(),
63+
'priority' => $this->configReader->getPriority($storeId),
64+
'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
65+
]);
66+
}, $collection);
67+
68+
return $items;
69+
}
70+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Sitemap\Model\ItemResolver;
8+
9+
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Store\Model\ScopeInterface;
11+
12+
class CmsPageConfigReader implements ConfigReaderInterface
13+
{
14+
/**#@+
15+
* Xpath config settings
16+
*/
17+
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/page/changefreq';
18+
const XML_PATH_PRIORITY = 'sitemap/page/priority';
19+
/**#@-*/
20+
21+
/**
22+
* Scope config
23+
*
24+
* @var ScopeConfigInterface
25+
*/
26+
private $scopeConfig;
27+
28+
/**
29+
* CategoryItemResolverConfigReader constructor.
30+
*
31+
* @param ScopeConfigInterface $scopeConfig
32+
*/
33+
public function __construct(ScopeConfigInterface $scopeConfig)
34+
{
35+
$this->scopeConfig = $scopeConfig;
36+
}
37+
38+
/**
39+
* {@inheritdoc}
40+
*/
41+
public function getPriority($storeId)
42+
{
43+
return (string)$this->scopeConfig->getValue(
44+
self::XML_PATH_PRIORITY,
45+
ScopeInterface::SCOPE_STORE,
46+
$storeId
47+
);
48+
}
49+
50+
/**
51+
* {@inheritdoc}
52+
*/
53+
public function getChangeFrequency($storeId)
54+
{
55+
return (string)$this->scopeConfig->getValue(
56+
self::XML_PATH_CHANGE_FREQUENCY,
57+
ScopeInterface::SCOPE_STORE,
58+
$storeId
59+
);
60+
}
61+
}

0 commit comments

Comments
 (0)