omz13/kirby3-suncyclepages

此包已 弃用 并不再维护。未建议替代包。

kirby3 插件,用于封存页面直到日出日期,并在日落日期撤回

1.1.0 2019-02-15 20:58 UTC

This package is auto-updated.

Last update: 2022-12-19 01:00:21 UTC


README

要求: Kirby 3.0

咖啡,啤酒等。

此插件免费,但如果您将其用于商业项目以表示支持,欢迎

为什么叫它 suncycle?

或许,从后见之明来看,可能还有更好的名字,例如“封存”、“自动发布”、“计划”等。然而,当开发此插件时,理念是遵循页面的生命周期:日出和日落是 SDLC 或 ILM 中的常用术语(尽管在这个领域之外并不那么熟悉),因此使用了“suncycle”。我的思维方式是软件模式而不是发布或新闻模式;也可以争论,除非你熟悉发布和新闻,否则“封存”和“计划”等术语在那个领域之外也很不寻常。

文档

目的

对于 kirby3 网站,此插件 omz13/suncyclepages 允许更精细地控制页面生命周期,使页面在“日出日期”时成为“普遍可用”,并在“日落日期”时被“撤回”。这增强了 kirby3 的 state(未发布、草稿和已发布)提供的有限生命周期选项,以更好地满足某些编辑或监管需求,例如,未发布、草稿、封存(等待“日出”)、发布(“阳光明媚”)和最终撤回(“日落”)。

您何时会使用此插件?

  • 主要用例是撰写您希望在将来发布的博客文章。现在写,并安排它们在未来出现(日出)。非常适合您离开但想继续出版计划的时候。
  • 另一个用例是用于临时优惠或通知。您发布一个页面,但将来您想将其删除(日落),或者更好的是,想将其删除并替换(重定向)到另一个表示“太晚了”(或类似内容)的位置。

功能规范

  • 只有状态为“已发布”的页面受到影响,即那些状态为“草稿”或“未发布”的页面表现如常。
  • 页面可以封存直到在指定日期(“日出”)普遍可用。在此日期之前尝试查看页面将返回标准错误页面和 404 [未找到] 代码。
  • 页面可以在特定日期(“日落”)撤回。在此日期之后尝试查看页面将返回 410 [已消失] 和标准错误页面,或根据每个页面将 301 [永久移动] 到指定位置。
  • 可以启用调试模式以在响应中包含一个标题,指示页面正在封存或已日落,参看 X-SUNCYCLE

路线图

计划功能和实现说明的非约束性列表是

  • MVP
  • 基本调试
  • 如果没有指定时间(只有日期),则默认合理。
  • 更好的调试
  • 蓝图

安装

根据您的认识论模型选择以下之一

  • composer require omz13/kirby3-suncyclepages;插件将自动出现在site/plugins中。
  • 下载最新版本的zip文件 - master.zip - 并将其内容复制到您的site/plugins/kirby3-suncyclepages
  • git submodule add https://github.com/omz13/kirby3-suncyclepages.git site/plugins/kirby3-suncyclepages.

配置

可以使用以下机制来修改插件的行为。

通过config.php

  • omz13.suncyclepages.disable - 可选 - 默认 false - 一个布尔值,如果为true,则禁用插件。

  • omz13.suncyclepages.embargoCheckWhenTemplateIs - 可选 - 默认 [ 'article' ]:如果页面使用在此选项中指定的模板名称,则明确执行禁令检查(日出)。

  • omz13.suncyclepages.embargoCheckWhenParentIs - 可选 - 默认 [ 'blog' ]:如果页面有在此参数中指定的父级,则明确执行禁令检查(日出)。

使用

内容字段

插件使用以下内容字段。这些都是可选的;如果缺失或为空,则假定它们不适用,即通过其指示的功能。

  • date - 日期 - 可选 - 页面要发布的日期,即禁令直至此日期。如果日期字段缺失或无法解析,则禁令检查不会禁令页面,即默认安全措施是不禁令而是发布。

  • skipembargo - 布尔值 - 可选(默认 false)- 如果为true,则跳过此页面的禁令检查(日出)(不执行)。

  • embargo - 布尔值 - 可选(默认 false)- 如果为true,则对页面明确执行禁令检查(日出)。此功能旨在用于通常不执行此类检查的页面,即由于父级(参见图 omz13.suncyclepages.embargoCheckWhenParentIs)或模板(参见图 omz13.suncyclepages.embargoCheckWhenTemplateIs)而没有明确执行。

  • sunset - 日期 - 可选 - 页面要下线(撤回)的(未来)日期。

  • sunsetto 页面 - 可选 - 在页面下线时用于301重定向的页面的名称;如果没有指定,则给出404

蓝图

此插件提供了以下内置蓝图(例如,为了使将字段添加到面板的蓝图blueprint/site.yml更容易)

  • omz13/suncycle - 一组用作extends的字段,以便轻松输入禁令参数。例如,它将被附加到入门套件的site/blueprints/pages/article.yml中,因此
sidebar:
  meta:
    type: fields
    fields:
      date:
        type: date
        time: true
        default: now
        label: Publication Date
      author:
        type: users
      tags:
        type: tags
        options: query
        query:
          fetch: site.tags.toStructure.sortBy("name", "asc")
          text: "{{ structureItem.name }}"
          value: "{{ structureItem.value }}"

      extends: omz13/suncycle

此内置蓝图已本地化为enfr;欢迎为其他语言提交PR!

使用

调试模式

如果kirby网站处于调试模式

  • 如果页面被禁令(等待日出),则404页面将包含一个额外的头X-SUNCYCLE: isUnderembargo

  • 如果一个页面已经被撤销(日落),则410响应将包括一个额外的头信息X-SUNCYCLE: isSunset,而301则包括X-SUNCYCLE: isSunset <to>,其中<to>sunsetto页面的名称。

在集合中的应用示例

在kirby3 StarterKit中,您不希望博客文章列表中包含任何处于禁令状态(等待日出)或已经日落的文章... 实现起来非常简单。

site/collections/articles.php看起来像这样

<?php

return function ($site) {
    return $site->find('blog')->children()->listed()->flip();
};

改为

<?php

return function ($site) {
	    return $site->find('blog')->children()->listed()->isunderembargo(false)->issunset(false)->flip();
};

请注意,在isunderembargoissunset的过滤器中使用false,因为这需要的是不在这种条件下存在的页面。

方法

此插件提供了以下方法

  • page.issunset():返回一个布尔值,如果页面当前处于日落状态(即已撤销),则为true

  • page.isunderembargo():返回一个布尔值,如果页面当前处于禁令状态(即等待日出),则为true

  • pages.issunset( $match = true ):一个过滤器,用于返回集合中处于日落状态(即已撤销)的页面子集($match = true)或不是($match = false)。

  • pages.isunderembargo( $match = true ):一个过滤器,用于返回集合中处于禁令状态(即等待日出)的页面子集($match = true)或不是($match = false)。

免责声明

此插件“按原样”提供,不提供任何保证。请在自己的风险下使用,并在将其用于生产环境之前始终自行测试。如果您发现任何问题,请创建新问题

许可协议

MIT

禁止您在任何宣传种族主义、性别歧视、恐同、动物虐待、暴力或其他任何形式仇恨言论的项目中使用此插件。