October CMS - 有条件地加载不同的页面

October CMS - Conditionally Load a Different Page

我正在 October CMS 中构建一个使用斜线页面的网站。启动页面只应在非 cookie 用户第一次访问该站点时显示给他们。我通过一个名为 splash 的插件中的组件来控制这部分。这是我的 onRun() 函数:

public function onRun()
{
    $key = 'shownsplash';
    if(!Session::has($key) || !Cookie::get($key))
    {
        $this->page['showsplash'] = true;
        Cookie::queue('shownsplash',true);
        Session::put($key,true);
        $resp = NULL;
    }
}

在我名为 'default' 的主页布局中,我想使用以下内容有条件地加载名为 'splash' 的初始页面模板:

{% if showsplash %}
     {{ loadpage('splash') }}
{% else %}
     Regular page template
{% endif %}

只是我不确定如何有条件地加载页面。一个额外的要求是初始页面采用 url http://www.example.com 而不是任何后续页面。谁能指出如何做到这一点?

在 octobercms cms/page 中被 url 击中,url 在配置部分中设置并绑定到布局。所以对我来说,页面 'routing' 对象多于 html 内容持有者。

事实上部分内容是 html 内容持有者

因此,如果我必须按照您的意思做同样的事情,我会使用部分和页面。 带有 url="/" 和两个部分的页面,一个用于常规页面,一个用于初始页面。 将您的插件组件绑定到页面而不是布局

{% if showsplash %}
    {% partial 'home/splash.htm' %}
{% else %}
    {% partial 'home/regular.html' %}
{% endif %}

我认为部分正是在这种有条件的东西中使用的东西。 一般认为

  • 作为网站结构的布局
  • 页面主要用于路由
  • 部分 html 内容