如何在octobercms中动态更改页面布局

法蒂·阿拉米(Fati Alami)

我想在octobercms中动态更改页面布局

这意味着必须根据会话的值更改页面的布局

我做了这段代码,但它不起作用:


==
<?php

function onInit()
{
   $this.layout.id = default;
}

?>
==_

那怎么办呢?先感谢您

卢克塔

您可以通过挂接到cms.page.beforeDisplay事件来完成此操作https : //octobercms.com/docs/api/cms/page/beforedisplay

您将需要在自定义插件中实现此功能,因为所有主题页面/布局功能在周期中都运行得太晚而无法获得所需的效果。有关如何开始构建插件的更多信息,请参见https://octobercms.com/docs/plugin/registration)。

您可以使用以下代码作为实现所需内容的示例:

public function boot()
{
    \Event::listen('cms.page.beforeDisplay', function ($controller, $url, $page) {
        if (!$page || $url === '404') {
            return $page;
        }

        // Assign the page's layout with your selected layout
        $page->layout = \Cms\Classes\Layout::loadCached(\Cms\Classes\Theme::getActiveTheme(), 'your-layout-here');

        return $page;
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章