October CMS - Conditionally Load a Different Page

- 1 answer

Ad

I'm in the process of building a site in October CMS that uses a slash page. The splash page is only supposed to show to non cookied users the first time that they visit the site. I am controlling this part via a component in a plugin called splash. Here is my onRun() function:

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;
    }
}

In my main page layout called 'default' I want to conditionally load the splash page template called 'splash' using the following:

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

Except that I'm not sure how to load a page conditionally. One additional requirement is that the splash page takes the url http://www.example.com and not any subsequent pages. Can anyone point out how to do this?

Ad

Answer

Ad

in octobercms cms/page are hit by url , the url set in the config section and are bound to a layout. so for me page are more 'routing' object than html content holder.

In fact partials ARE html content holder

So if i had to do the same thing as you mean i would use partial and page. a page with url="/" and two partials, one for the regular page and one for the splash. bind your plugin component to the page not the layout

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

I think partial are exactly what to use in this kind of conditional stuff. generaly think of

  • layout as website structuration
  • page mainly for routing
  • partial for html content
Ad
source: stackoverflow.com
Ad