Block.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Block;
  7. use Magento\Framework\View\Element\AbstractBlock;
  8. /**
  9. * Cms block content block
  10. */
  11. class Block extends AbstractBlock implements \Magento\Framework\DataObject\IdentityInterface
  12. {
  13. /**
  14. * @var \Magento\Cms\Model\Template\FilterProvider
  15. */
  16. protected $_filterProvider;
  17. /**
  18. * Store manager
  19. *
  20. * @var \Magento\Store\Model\StoreManagerInterface
  21. */
  22. protected $_storeManager;
  23. /**
  24. * Block factory
  25. *
  26. * @var \Magento\Cms\Model\BlockFactory
  27. */
  28. protected $_blockFactory;
  29. /**
  30. * Construct
  31. *
  32. * @param \Magento\Framework\View\Element\Context $context
  33. * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider
  34. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  35. * @param \Magento\Cms\Model\BlockFactory $blockFactory
  36. * @param array $data
  37. */
  38. public function __construct(
  39. \Magento\Framework\View\Element\Context $context,
  40. \Magento\Cms\Model\Template\FilterProvider $filterProvider,
  41. \Magento\Store\Model\StoreManagerInterface $storeManager,
  42. \Magento\Cms\Model\BlockFactory $blockFactory,
  43. array $data = []
  44. ) {
  45. parent::__construct($context, $data);
  46. $this->_filterProvider = $filterProvider;
  47. $this->_storeManager = $storeManager;
  48. $this->_blockFactory = $blockFactory;
  49. }
  50. /**
  51. * Prepare Content HTML
  52. *
  53. * @return string
  54. */
  55. protected function _toHtml()
  56. {
  57. $blockId = $this->getBlockId();
  58. $html = '';
  59. if ($blockId) {
  60. $storeId = $this->_storeManager->getStore()->getId();
  61. /** @var \Magento\Cms\Model\Block $block */
  62. $block = $this->_blockFactory->create();
  63. $block->setStoreId($storeId)->load($blockId);
  64. if ($block->isActive()) {
  65. $html = $this->_filterProvider->getBlockFilter()->setStoreId($storeId)->filter($block->getContent());
  66. }
  67. }
  68. return $html;
  69. }
  70. /**
  71. * Return identifiers for produced content
  72. *
  73. * @return array
  74. */
  75. public function getIdentities()
  76. {
  77. return [\Magento\Cms\Model\Block::CACHE_TAG . '_' . $this->getBlockId()];
  78. }
  79. }