AbstractList.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /**
  3. * Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved.
  4. * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
  5. *
  6. * Glory to Ukraine! Glory to the heroes!
  7. */
  8. namespace Magefan\Blog\Block\Post\PostList;
  9. use Magento\Store\Model\ScopeInterface;
  10. /**
  11. * Abstract blog post list block
  12. */
  13. abstract class AbstractList extends \Magento\Framework\View\Element\Template
  14. {
  15. /**
  16. * @var \Magento\Cms\Model\Template\FilterProvider
  17. */
  18. protected $_filterProvider;
  19. /**
  20. * @var \Magento\Cms\Model\Page
  21. */
  22. protected $_post;
  23. /**
  24. * @var \Magento\Framework\Registry
  25. */
  26. protected $_coreRegistry;
  27. /**
  28. * @var \Magefan\Blog\Model\ResourceModel\Post\CollectionFactory
  29. */
  30. protected $_postCollectionFactory;
  31. /**
  32. * @var \Magefan\Blog\Model\ResourceModel\Post\Collection
  33. */
  34. protected $_postCollection;
  35. /**
  36. * @var \Magefan\Blog\Model\Url
  37. */
  38. protected $_url;
  39. /**
  40. * Construct
  41. *
  42. * @param \Magento\Framework\View\Element\Context $context
  43. * @param \Magento\Framework\Registry $coreRegistry
  44. * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider
  45. * @param \Magefan\Blog\Model\ResourceModel\Post\CollectionFactory $postCollectionFactory
  46. * @param \Magefan\Blog\Model\Url $url
  47. * @param array $data
  48. */
  49. public function __construct(
  50. \Magento\Framework\View\Element\Template\Context $context,
  51. \Magento\Framework\Registry $coreRegistry,
  52. \Magento\Cms\Model\Template\FilterProvider $filterProvider,
  53. \Magefan\Blog\Model\ResourceModel\Post\CollectionFactory $postCollectionFactory,
  54. \Magefan\Blog\Model\Url $url,
  55. array $data = []
  56. ) {
  57. parent::__construct($context, $data);
  58. $this->_coreRegistry = $coreRegistry;
  59. $this->_filterProvider = $filterProvider;
  60. $this->_postCollectionFactory = $postCollectionFactory;
  61. $this->_url = $url;
  62. }
  63. /**
  64. * Prepare posts collection
  65. *
  66. * @return void
  67. */
  68. protected function _preparePostCollection()
  69. {
  70. $this->_postCollection = $this->_postCollectionFactory->create()
  71. ->addActiveFilter()
  72. ->addStoreFilter($this->_storeManager->getStore()->getId())
  73. ->setOrder('publish_time', 'DESC');
  74. if ($this->getPageSize()) {
  75. $this->_postCollection->setPageSize($this->getPageSize());
  76. }
  77. }
  78. /**
  79. * Prepare posts collection
  80. *
  81. * @return \Magefan\Blog\Model\ResourceModel\Post\Collection
  82. */
  83. public function getPostCollection()
  84. {
  85. if (is_null($this->_postCollection)) {
  86. $this->_preparePostCollection();
  87. }
  88. return $this->_postCollection;
  89. }
  90. /**
  91. * Render block HTML
  92. *
  93. * @return string
  94. */
  95. protected function _toHtml()
  96. {
  97. if (!$this->_scopeConfig->getValue(
  98. \Magefan\Blog\Helper\Config::XML_PATH_EXTENSION_ENABLED,
  99. ScopeInterface::SCOPE_STORE
  100. )) {
  101. return '';
  102. }
  103. return parent::_toHtml();
  104. }
  105. }