123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?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\Sidebar;
- /**
- * Blog sidebar archive block
- */
- class Archive extends \Magefan\Blog\Block\Post\PostList\AbstractList
- {
- use Widget;
- /**
- * @var string
- */
- protected $_widgetKey = 'archive';
- /**
- * Available months
- * @var array
- */
- protected $_months;
- /**
- * Prepare posts collection
- *
- * @return void
- */
- protected function _preparePostCollection()
- {
- parent::_preparePostCollection();
- $this->_postCollection->getSelect()->group(
- 'MONTH(main_table.publish_time)',
- 'DESC'
- );
- }
- /**
- * Retrieve available months
- * @return array
- */
- public function getMonths()
- {
- if (is_null($this->_months)) {
- $this->_months = [];
- $this->_preparePostCollection();
- foreach($this->_postCollection as $post) {
- $time = strtotime($post->getData('publish_time'));
- $this->_months[date('Y-m', $time)] = $time;
- }
- }
- return $this->_months;
- }
- /**
- * Retrieve year by time
- * @param int $time
- * @return string
- */
- public function getYear($time)
- {
- return date('Y', $time);
- }
- /**
- * Retrieve month by time
- * @param int $time
- * @return string
- */
- public function getMonth($time)
- {
- return __(date('F', $time));
- }
- /**
- * Retrieve archive url by time
- * @param int $time
- * @return string
- */
- public function getTimeUrl($time)
- {
- return $this->_url->getUrl(
- date('Y-m', $time),
- \Magefan\Blog\Model\Url::CONTROLLER_ARCHIVE
- );
- }
- /**
- * Retrieve blog identities
- * @return array
- */
- public function getIdentities()
- {
- return [\Magento\Cms\Model\Block::CACHE_TAG . '_blog_archive_widget'];
- }
- }
|