Category.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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\Catalog\CategoryFactory;
  8. use Magento\Sitemap\Model\SitemapItemInterfaceFactory;
  9. class Category implements ItemProviderInterface
  10. {
  11. /**
  12. * Category factory
  13. *
  14. * @var CategoryFactory
  15. */
  16. private $categoryFactory;
  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. * CategorySitemapItemResolver constructor.
  31. *
  32. * @param ConfigReaderInterface $configReader
  33. * @param CategoryFactory $categoryFactory
  34. * @param SitemapItemInterfaceFactory $itemFactory
  35. */
  36. public function __construct(
  37. ConfigReaderInterface $configReader,
  38. CategoryFactory $categoryFactory,
  39. SitemapItemInterfaceFactory $itemFactory
  40. ) {
  41. $this->categoryFactory = $categoryFactory;
  42. $this->itemFactory = $itemFactory;
  43. $this->configReader = $configReader;
  44. }
  45. /**
  46. * {@inheritdoc}
  47. */
  48. public function getItems($storeId)
  49. {
  50. $collection = $this->categoryFactory->create()
  51. ->getCollection($storeId);
  52. $items = array_map(function ($item) use ($storeId) {
  53. return $this->itemFactory->create([
  54. 'url' => $item->getUrl(),
  55. 'updatedAt' => $item->getUpdatedAt(),
  56. 'images' => $item->getImages(),
  57. 'priority' => $this->configReader->getPriority($storeId),
  58. 'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
  59. ]);
  60. }, $collection);
  61. return $items;
  62. }
  63. }