【问题标题】:SilverStripe draft content statusSilverStripe 草稿内容状态
【发布时间】:2016-03-12 14:41:33
【问题描述】:

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

我希望找到类似的东西:

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

【问题讨论】:

标签: silverstripe


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这很方便,但我正在逐页查找状态(即,此页面未发布)
  • 没有这样的字段或方法可以返回一个状态。您可以创建自己的方法来检查 1. 页面从未发布,2. 草稿页面版本在发布后被修改。这两种情况都会导致您处于“未发布”状态。您真正想处理哪种情况?
  • 您最初的问题是如何识别草稿内容,答案已涵盖。
  • 谢谢,我在某些页面上显示了混合内容(登录时),其中一些已发布,其中一些是草稿/阶段您的 cmets 帮助我了解了我需要知道的内容,所以我会写一些东西来查看发布和修改日期。
  • @Dan,你如何在页面上混合内容?通常使用模块silverstripe/widgetssheadawson/silverstripe-blocks 完成。 SilverStripe 正在开发一项新功能来管理相关内容(媒体和可嵌入页面)。
【解决方案2】:

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

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

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

当我处于开发模式时,我通常会使用这样的东西来避免向所有人展示:

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

【讨论】:

  • 谢谢,我也去看看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
相关资源
最近更新 更多