-
Notifications
You must be signed in to change notification settings - Fork 9.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MAGETWO-70872: [WIP]Google Sitemap refactoring - introduce item resol…
…ver #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
- Loading branch information
Showing
28 changed files
with
1,997 additions
and
519 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
|
||
namespace Magento\Sitemap\Model\ItemResolver; | ||
|
||
use Magento\Sitemap\Model\ResourceModel\Catalog\CategoryFactory; | ||
use Magento\Sitemap\Model\SitemapItemInterfaceFactory; | ||
|
||
class Category implements ItemResolverInterface | ||
{ | ||
/** | ||
* Category factory | ||
* | ||
* @var CategoryFactory | ||
*/ | ||
private $categoryFactory; | ||
|
||
/** | ||
* Sitemap item factory | ||
* | ||
* @var SitemapItemInterfaceFactory | ||
*/ | ||
private $itemFactory; | ||
|
||
/** | ||
* Config reader | ||
* | ||
* @var ConfigReaderInterface | ||
*/ | ||
private $configReader; | ||
|
||
/** | ||
* CategorySitemapItemResolver constructor. | ||
* | ||
* @param ConfigReaderInterface $configReader | ||
* @param CategoryFactory $categoryFactory | ||
* @param SitemapItemInterfaceFactory $itemFactory | ||
*/ | ||
public function __construct( | ||
ConfigReaderInterface $configReader, | ||
CategoryFactory $categoryFactory, | ||
SitemapItemInterfaceFactory $itemFactory | ||
) { | ||
$this->categoryFactory = $categoryFactory; | ||
$this->itemFactory = $itemFactory; | ||
$this->configReader = $configReader; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function getItems($storeId) | ||
{ | ||
$collection = $this->categoryFactory->create() | ||
->getCollection($storeId); | ||
|
||
$items = array_map(function ($item) use ($storeId) { | ||
return $this->itemFactory->create([ | ||
'url' => $item->getUrl(), | ||
'updatedAt' => $item->getUpdatedAt(), | ||
'images' => $item->getImages(), | ||
'priority' => $this->configReader->getPriority($storeId), | ||
'changeFrequency' => $this->configReader->getChangeFrequency($storeId), | ||
]); | ||
}, $collection); | ||
|
||
return $items; | ||
} | ||
} |
61 changes: 61 additions & 0 deletions
61
app/code/Magento/Sitemap/Model/ItemResolver/CategoryConfigReader.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
|
||
namespace Magento\Sitemap\Model\ItemResolver; | ||
|
||
use Magento\Framework\App\Config\ScopeConfigInterface; | ||
use Magento\Store\Model\ScopeInterface; | ||
|
||
class CategoryConfigReader implements ConfigReaderInterface | ||
{ | ||
/**#@+ | ||
* Xpath config settings | ||
*/ | ||
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/category/changefreq'; | ||
const XML_PATH_PRIORITY = 'sitemap/category/priority'; | ||
/**#@-*/ | ||
|
||
/** | ||
* Scope config | ||
* | ||
* @var ScopeConfigInterface | ||
*/ | ||
private $scopeConfig; | ||
|
||
/** | ||
* CategoryItemResolverConfigReader constructor. | ||
* | ||
* @param ScopeConfigInterface $scopeConfig | ||
*/ | ||
public function __construct(ScopeConfigInterface $scopeConfig) | ||
{ | ||
$this->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 | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
|
||
namespace Magento\Sitemap\Model\ItemResolver; | ||
|
||
use Magento\Sitemap\Model\ResourceModel\Cms\PageFactory; | ||
use Magento\Sitemap\Model\SitemapItemInterfaceFactory; | ||
|
||
class CmsPage implements ItemResolverInterface | ||
{ | ||
/** | ||
* Cms page factory | ||
* | ||
* @var PageFactory | ||
*/ | ||
private $cmsPageFactory; | ||
|
||
/** | ||
* Sitemap item factory | ||
* | ||
* @var SitemapItemInterfaceFactory | ||
*/ | ||
private $itemFactory; | ||
|
||
/** | ||
* Config reader | ||
* | ||
* @var ConfigReaderInterface | ||
*/ | ||
private $configReader; | ||
|
||
/** | ||
* CmsPage constructor. | ||
* | ||
* @param ConfigReaderInterface $configReader | ||
* @param PageFactory $cmsPageFactory | ||
* @param SitemapItemInterfaceFactory $itemFactory | ||
*/ | ||
public function __construct( | ||
ConfigReaderInterface $configReader, | ||
PageFactory $cmsPageFactory, | ||
SitemapItemInterfaceFactory $itemFactory | ||
) { | ||
$this->cmsPageFactory = $cmsPageFactory; | ||
$this->itemFactory = $itemFactory; | ||
$this->configReader = $configReader; | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function getItems($storeId) | ||
{ | ||
$collection = $this->cmsPageFactory->create()->getCollection($storeId); | ||
$items = array_map(function ($item) use ($storeId) { | ||
return $this->itemFactory->create([ | ||
'url' => $item->getUrl(), | ||
'updatedAt' => $item->getUpdatedAt(), | ||
'images' => $item->getImages(), | ||
'priority' => $this->configReader->getPriority($storeId), | ||
'changeFrequency' => $this->configReader->getChangeFrequency($storeId), | ||
]); | ||
}, $collection); | ||
|
||
return $items; | ||
} | ||
} |
61 changes: 61 additions & 0 deletions
61
app/code/Magento/Sitemap/Model/ItemResolver/CmsPageConfigReader.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<?php | ||
/** | ||
* Copyright © Magento, Inc. All rights reserved. | ||
* See COPYING.txt for license details. | ||
*/ | ||
|
||
namespace Magento\Sitemap\Model\ItemResolver; | ||
|
||
use Magento\Framework\App\Config\ScopeConfigInterface; | ||
use Magento\Store\Model\ScopeInterface; | ||
|
||
class CmsPageConfigReader implements ConfigReaderInterface | ||
{ | ||
/**#@+ | ||
* Xpath config settings | ||
*/ | ||
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/page/changefreq'; | ||
const XML_PATH_PRIORITY = 'sitemap/page/priority'; | ||
/**#@-*/ | ||
|
||
/** | ||
* Scope config | ||
* | ||
* @var ScopeConfigInterface | ||
*/ | ||
private $scopeConfig; | ||
|
||
/** | ||
* CategoryItemResolverConfigReader constructor. | ||
* | ||
* @param ScopeConfigInterface $scopeConfig | ||
*/ | ||
public function __construct(ScopeConfigInterface $scopeConfig) | ||
{ | ||
$this->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 | ||
); | ||
} | ||
} |
Oops, something went wrong.