我想在十月厘米中动态更改页面的布局
这意味着必须根据会话的值更改页面的布局
我编写了此代码,但是它不起作用:
==
<?php
function onInit()
{
$this.layout.id = default;
}
?>
==_
那怎么办呢? 预先谢谢你
答案 0 :(得分:1)
您可以通过加入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;
});
}