SilverStripe 草稿内容状态

SilverStripe draft content status

在我的网站上查看草稿 pages/content 时,是否有一种简单的方法来识别草稿内容?我希望能够识别草稿内容并将其设置为与已发布内容不同的样式。

我希望找到类似的东西:

<% if $status == 'draft' %>
...
<% end_if %>

SilverStripe 页面存储在 SiteTreeSiteTree_Live table 中。前者 table 包含草稿内容(内部称为 Stage 阶段),后者包含已发布的内容(Live 阶段)。 SiteTree_versions table 包含页面的所有修改版本。

当您在生产中请求页面时,默认情况下会从 Live 阶段读取。当您在 CMS 中看到预览时,您可以在各个阶段之间切换。

您可以获得以下版本的阅读阶段

<% if $CurrentReadingMode = 'Stage.Stage' %>
    Draft content
<% end_if %>

<% if $CurrentReadingMode = 'Stage.Live' %>
    Published content
<% end_if %>

您可以查看 https://github.com/jonom/silverstripe-betternavigator 模块,它在右上角显示了漂亮的红色(草稿)或绿色(实时)状态栏(以及一个方便的菜单,例如用于编辑此页面):

只需使用 composer 安装它,然后将 $BetterNavigator 放在模板中的某处。如果您的网站使用缓存,请确保排除 BetterNavigator 的输出。

您还可以对其进行配置,使其仅在您处于开发模式或登录时显示。

我通常使用类似这样的东西来避免在我处于开发模式时向所有人展示它:

<% if $CurrentUser %>
    $BetterNavigator
<% end_if %>