Feeds.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Rss\Block;
  7. /**
  8. * Class Feeds
  9. * @api
  10. * @package Magento\Rss\Block
  11. * @since 100.0.2
  12. */
  13. class Feeds extends \Magento\Framework\View\Element\Template
  14. {
  15. /**
  16. * @var string
  17. */
  18. protected $_template = 'Magento_Rss::feeds.phtml';
  19. /**
  20. * @var \Magento\Framework\App\Rss\RssManagerInterface
  21. */
  22. protected $rssManager;
  23. /**
  24. * @param \Magento\Framework\View\Element\Template\Context $context
  25. * @param \Magento\Framework\App\Rss\RssManagerInterface $rssManager
  26. * @param array $data
  27. */
  28. public function __construct(
  29. \Magento\Framework\View\Element\Template\Context $context,
  30. \Magento\Framework\App\Rss\RssManagerInterface $rssManager,
  31. array $data = []
  32. ) {
  33. $this->rssManager = $rssManager;
  34. parent::__construct($context, $data);
  35. }
  36. /**
  37. * Add Link elements to head
  38. *
  39. * @return $this
  40. */
  41. protected function _prepareLayout()
  42. {
  43. $head = $this->getLayout()->getBlock('head');
  44. $feeds = $this->getFeeds();
  45. if ($head && !empty($feeds)) {
  46. foreach ($feeds as $feed) {
  47. if (!isset($feed['group'])) {
  48. $head->addRss($feed['label'], $feed['link']);
  49. } else {
  50. foreach ($feed['feeds'] as $item) {
  51. $head->addRss($item['label'], $item['link']);
  52. }
  53. }
  54. }
  55. }
  56. return parent::_prepareLayout();
  57. }
  58. /**
  59. * @return array
  60. */
  61. public function getFeeds()
  62. {
  63. $providers = $this->rssManager->getProviders();
  64. $feeds = [];
  65. $groups = [];
  66. foreach ($providers as $provider) {
  67. $item = $provider->getFeeds();
  68. if (empty($item)) {
  69. continue;
  70. }
  71. if (isset($item['group'])) {
  72. $groups[] = $item;
  73. } else {
  74. $feeds[] = $item;
  75. }
  76. }
  77. $feeds = array_merge($feeds, $groups);
  78. return $feeds;
  79. }
  80. }