登录后,如何检测preview/draft/live?

While logged in, how to detect preview/draft/live?

在使用 Apostrophe Workflow 时,我不知道如何在 CSS and/or JavaScript 中检测用户正在查看页面的模式。

.apos-workflow-draft-page CSS class 似乎在草稿和预览模式中都存在,这可能会导致问题。我们改进了某些元素的可见性和布局,因此它们在草稿中被理解为可编辑,但在预览中,我们不希望显示所有这些提示。

ApostropheCMS 正确检测这些状态的方法是什么?

您可以检查 apos.modules['apostrophe-workflow'].locale,如果处于草稿模式,它将以 -draft 结尾:

if (apos.modules['apostrophe-workflow'].locale.match(/-draft$/)) {
  // draft mode
} else {
  // live mode
}

检测预览模式也很简单。首先检查草稿模式,然后检查模板中的任何位置 data.workflowPreview

data.workflowPreview

这不会被推送到前端 javascript 变量中,但您可以自己做:

<script>
window.workflowPreview = {{ data.workflowPreview | json }};
</script>