如何动态更改octobercms中的页面布局
how to change dynamically the page layout in octobercms
我想在 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;
});
}
我想在 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;
});
}