1+ <?php
2+ /**
3+ * Copyright © Magefan ([email protected] ). All rights reserved. 4+ * Please visit Magefan.com for license details (https://magefan.com/end-user-license-agreement).
5+ *
6+ * Glory to Ukraine! Glory to the heroes!
7+ */
8+
9+ namespace Magefan \Blog \Observer ;
10+
11+ use Magento \Framework \Event \ObserverInterface ;
12+
13+ class LayoutGenerateBlocksAfter implements ObserverInterface
14+ {
15+ /**
16+ * @var \Magento\Framework\View\Page\Config
17+ */
18+ private $ pageConfig ;
19+
20+ /**
21+ * @param \Magento\Framework\View\Page\Config $pageConfig
22+ */
23+ public function __construct (
24+ \Magento \Framework \View \Page \Config $ pageConfig
25+ ) {
26+ $ this ->pageConfig = $ pageConfig ;
27+ }
28+
29+ /**
30+ * Add rel prev and rel next
31+ * @param \Magento\Framework\Event\Observer $observer
32+ * @return $this|void
33+ */
34+ public function execute (\Magento \Framework \Event \Observer $ observer )
35+ {
36+ $ availableActions = [
37+ 'blog_archive_view ' ,
38+ 'blog_author_view ' ,
39+ 'blog_category_view ' ,
40+ 'blog_index_index ' ,
41+ 'blog_tag_view '
42+ ];
43+ if (!in_array ($ observer ->getEvent ()->getFullActionName (), $ availableActions )) {
44+ return ;
45+ }
46+
47+ $ productListBlock = $ observer ->getEvent ()->getLayout ()->getBlock ('blog.posts.list ' );
48+ if (!$ productListBlock ) {
49+ return ;
50+ }
51+
52+ $ toolbar = $ productListBlock ->getToolbarBlock ();
53+ $ toolbar ->setCollection ($ productListBlock ->getPostCollection ());
54+
55+ $ pagerBlock = $ toolbar ->getPagerBlock ();
56+ if (!($ pagerBlock instanceof \Magento \Framework \DataObject)) {
57+ return ;
58+ }
59+
60+ if (1 < $ pagerBlock ->getCurrentPage ()) {
61+ $ this ->pageConfig ->addRemotePageAsset (
62+ $ pagerBlock ->getPageUrl (
63+ $ pagerBlock ->getCollection ()->getCurPage (-1 )
64+ ),
65+ 'link_rel ' ,
66+ ['attributes ' => ['rel ' => 'prev ' ]]
67+ );
68+ }
69+ if ($ pagerBlock ->getCurrentPage () < $ pagerBlock ->getLastPageNum ()) {
70+ $ this ->pageConfig ->addRemotePageAsset (
71+ $ pagerBlock ->getPageUrl (
72+ $ pagerBlock ->getCollection ()->getCurPage (+1 )
73+ ),
74+ 'link_rel ' ,
75+ ['attributes ' => ['rel ' => 'next ' ]]
76+ );
77+ }
78+
79+ }
80+ }
0 commit comments