将Silverstripe网站设置为CMS之外的Live版本

时间:2017-07-05 22:20:55

标签: silverstripe

我们有许多客户在使用Silverstripe CMS时感到困惑,然后他们的实时网站会显示草稿版本。

我们已经设置了" Better Navigator"显示网站是否处于草稿或实时但客户端仍然感到困惑(在某些视图中,更好的导航器按钮被遮挡)。

理想情况下,如果在CMS之外查看实时网站,我们希望它只显示" Live"版本

这可能吗?

1 个答案:

答案 0 :(得分:7)

我们可以添加一些仅草稿的CSS,而不是强制网站始终显示已发布的版本,以便让用户更清楚他们正在查看草稿版本。

创建一个draft.css文件,该文件将改变草稿版本的网站样式。在此示例中,我将更改body标记的背景,以显示带有"草稿"在它上面。

<强> mysite的/ CSS / draft.css

body {
    background-image: url(../images/draft-background.png);
}

<强> mysite的/图像/草案-background.png

draft background image

在我们的Page_Controller init函数中,我们在当前阶段设置为draft.css时加载Stage文件:

<强> Page_Controller

class Page_Controller extends ContentController
{

    public function init()
    {
        parent::init();

        // ...
        if ($this->current_stage() == 'Stage') {
            Requirements::css('mysite/css/draft.css');
        }
    }
    // ...
}

最终结果如下所示:

Draft background example screenshot

这只是我们只能用草案css做的一个例子。或者,我们可以替换网站徽标,或在页面内容的顶部显示警告栏。

以下是一些替代css,可在所有网站内容上方显示上述draft-background.png,而不是body代码的背景图片:

body:after {
    background-image: url(../images/draft-background.png);
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    z-index: 1000;
    pointer-events: none;
    opacity: 0.25;
}

以下是一些示例css,用于在每个页面的顶部显示警告栏:

body:after {
    content: "You are currently viewing a draft version of this page";
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10000;
    pointer-events: none;
    opacity: 0.75;
    text-align: center;
    background: #F7CA18;
    color: #000000;
    padding: 20px;
}

body {
    margin-top: 60px;
}