123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- /**
- * Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved.
- * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
- *
- * Glory to Ukraine! Glory to the heroes!
- */
- namespace Magefan\Blog\Block\Widget;
- /**
- * Blog recent posts widget
- */
- class Recent extends \Magefan\Blog\Block\Post\PostList\AbstractList implements \Magento\Widget\Block\BlockInterface
- {
- /**
- * @var \Magefan\Blog\Model\CategoryFactory
- */
- protected $_categoryFactory;
- /**
- * @var \Magefan\Blog\Model\Category
- */
- protected $_category;
- /**
- * Construct
- *
- * @param \Magento\Framework\View\Element\Context $context
- * @param \Magento\Framework\Registry $coreRegistry
- * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider
- * @param \Magefan\Blog\Model\ResourceModel\Post\CollectionFactory $postCollectionFactory
- * @param \Magefan\Blog\Model\Url $url
- * @param \Magefan\Blog\Model\CategoryFactory $categoryFactory
- * @param array $data
- */
- public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
- \Magento\Framework\Registry $coreRegistry,
- \Magento\Cms\Model\Template\FilterProvider $filterProvider,
- \Magefan\Blog\Model\ResourceModel\Post\CollectionFactory $postCollectionFactory,
- \Magefan\Blog\Model\Url $url,
- \Magefan\Blog\Model\CategoryFactory $categoryFactory,
- array $data = []
- ) {
- parent::__construct($context, $coreRegistry, $filterProvider, $postCollectionFactory, $url, $data);
- $this->_categoryFactory = $categoryFactory;
- }
- /**
- * Set blog template
- *
- * @return this
- */
- public function _toHtml()
- {
- $this->setTemplate(
- $this->getData('custom_template') ?: 'widget/recent.phtml'
- );
- return parent::_toHtml();
- }
- /**
- * Retrieve block title
- *
- * @return string
- */
- public function getTitle()
- {
- return $this->getData('title') ?: __('Recent Blog Posts');
- }
- /**
- * Prepare posts collection
- *
- * @return void
- */
- protected function _preparePostCollection()
- {
- $size = $this->getData('number_of_posts');
- if (!$size) {
- $size = (int) $this->_scopeConfig->getValue(
- 'mfblog/sidebar/recent_posts/posts_per_page',
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- );
- }
- $this->setPageSize($size);
- parent::_preparePostCollection();
- if ($category = $this->getCategory()) {
- $this->_postCollection->addCategoryFilter($category);
- }
- }
- /**
- * Retrieve category instance
- *
- * @return \Magefan\Blog\Model\Category
- */
- public function getCategory()
- {
- if ($this->_category === null) {
- if ($categoryId = $this->getData('category_id')) {
- $category = $this->_categoryFactory->create();
- $category->load($categoryId);
- $storeId = $this->_storeManager->getStore()->getId();
- if ($category->isVisibleOnStore($storeId)) {
- $category->setStoreId($storeId);
- return $this->_category = $category;
- }
- }
- $this->_category = false;
- }
- return $this->_category;
- }
- /**
- * Retrieve post short content
- * @param \Magefan\Blog\Model\Post $post
- *
- * @return string
- */
- public function getShorContent($post)
- {
- return $post->getShortFilteredContent();
- }
- }
|