我们有许多客户在使用Silverstripe CMS时感到困惑,然后他们的实时网站会显示草稿版本.
我们设置了" Better Navigator ",显示一个站点是否处于Draft或Live状态,但客户端仍然感到困惑(在某些视图中,Better Navigator按钮被遮挡).
理想情况下,如果在CMS之外查看实时网站,我们希望它只显示"实时"版本.
那可能吗?
我们可以添加一些仅草稿CSS,而不是强制网站始终显示已发布的版本,以使用户更清楚地看到他们正在查看草稿版本.
创建一个draft.css文件,它将改变草稿版本的网站样式.在此示例中,我将更改body标记的背景以显示其上带有"草稿"字样的平铺图像.
mysite的/ CSS/draft.css
body {
background-image: url(../images/draft-background.png);
}
Run Code Online (Sandbox Code Playgroud)
mysite的/图像/草案-background.png
在我们的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');
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
最终结果如下所示:
这只是我们只能用草案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;
}
Run Code Online (Sandbox Code Playgroud)
下面是一些示例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;
}
Run Code Online (Sandbox Code Playgroud)