CmsPage.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sitemap\Model\ItemProvider;
  7. use Magento\Sitemap\Model\ResourceModel\Cms\PageFactory;
  8. use Magento\Sitemap\Model\SitemapItemInterfaceFactory;
  9. class CmsPage implements ItemProviderInterface
  10. {
  11. /**
  12. * Cms page factory
  13. *
  14. * @var PageFactory
  15. */
  16. private $cmsPageFactory;
  17. /**
  18. * Sitemap item factory
  19. *
  20. * @var SitemapItemInterfaceFactory
  21. */
  22. private $itemFactory;
  23. /**
  24. * Config reader
  25. *
  26. * @var ConfigReaderInterface
  27. */
  28. private $configReader;
  29. /**
  30. * CmsPage constructor.
  31. *
  32. * @param ConfigReaderInterface $configReader
  33. * @param PageFactory $cmsPageFactory
  34. * @param SitemapItemInterfaceFactory $itemFactory
  35. */
  36. public function __construct(
  37. ConfigReaderInterface $configReader,
  38. PageFactory $cmsPageFactory,
  39. SitemapItemInterfaceFactory $itemFactory
  40. ) {
  41. $this->cmsPageFactory = $cmsPageFactory;
  42. $this->itemFactory = $itemFactory;
  43. $this->configReader = $configReader;
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function getItems($storeId)
  49. {
  50. $collection = $this->cmsPageFactory->create()->getCollection($storeId);
  51. $items = array_map(function ($item) use ($storeId) {
  52. return $this->itemFactory->create([
  53. 'url' => $item->getUrl(),
  54. 'updatedAt' => $item->getUpdatedAt(),
  55. 'images' => $item->getImages(),
  56. 'priority' => $this->configReader->getPriority($storeId),
  57. 'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
  58. ]);
  59. }, $collection);
  60. return $items;
  61. }
  62. }