1111use Magento \Framework \Exception \NoSuchEntityException ;
1212use Magento \Framework \View \Layout ;
1313use Magento \Framework \Event \Observer ;
14+ use Mooore \WordpressIntegrationCms \Model \RemotePageRepository ;
1415
1516class LayoutLoadBefore implements ObserverInterface
1617{
@@ -37,11 +38,18 @@ class LayoutLoadBefore implements ObserverInterface
3738 */
3839 private $ page ;
3940
40- public function __construct (Http $ request , PageRepository $ pageRepository , Page $ page )
41- {
41+ private RemotePageRepository $ remotePageRepository ;
42+
43+ public function __construct (
44+ Http $ request ,
45+ PageRepository $ pageRepository ,
46+ RemotePageRepository $ remotePageRepository ,
47+ Page $ page
48+ ) {
4249 $ this ->request = $ request ;
4350 $ this ->pageRepository = $ pageRepository ;
4451 $ this ->page = $ page ;
52+ $ this ->remotePageRepository = $ remotePageRepository ;
4553 }
4654
4755 /**
@@ -76,5 +84,22 @@ public function execute(Observer $observer)
7684 $ layout = $ observer ->getData ('layout ' );
7785
7886 $ layout ->getUpdate ()->addHandle ('cms_wp_content ' );
87+ $ layout ->getUpdate ()->addHandle ('wpci_page_view ' );
88+
89+ $ this ->addWordpressLayoutHandles ($ page ->getData ('wordpress_page_id ' ), $ layout );
90+ }
91+
92+ public function addWordpressLayoutHandles ($ wordpressPageId , $ layout ) {
93+ [$ siteId , $ pageId ] = explode ('_ ' , $ wordpressPageId );
94+ $ siteId = (int )$ siteId ;
95+ $ pageId = (int )$ pageId ;
96+
97+ $ wpPage = $ this ->remotePageRepository ->get ($ siteId , $ pageId );
98+
99+ if (!array_key_exists ('page_layout ' , $ wpPage ) || is_null ($ wpPage ['page_layout ' ])) {
100+ return ;
101+ }
102+
103+ $ layout ->getUpdate ()->addHandle (sprintf ('wpci_page_view_%s ' , $ wpPage ['page_layout ' ]));
79104 }
80105}
0 commit comments