studioespresso/craft-date-range

日期范围字段

资助包维护!
janhenckens

安装次数: 18,510

依赖项: 0

建议者: 0

安全性: 0

星星: 12

关注者: 4

分支: 5

开放问题: 3

类型:craft-plugin

5.0.0-beta.2 2024-04-29 14:03 UTC

README

这就是它的意思 :)。此字段在一个字段中提供开始和结束日期。

需求

此插件需要 Craft CMS 3.0.0 或更高版本。

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的 Craft 项目

     cd /path/to/project
     composer require studioespresso/craft-date-range
     ./craft install/plugin date-range
    

设置

可以在字段上设置以下选项

  • 显示开始时间字段
  • 显示结束时间字段
  • 结束日期应晚于或晚于开始日期

当字段设置为必填时,开始和结束日期(以及如果启用时间)都将必填。

默认时间值

由于 PHP DateTime 对象也有时间值,无论您是否输入(或是否有选项启用以显示字段),插件都会尽可能智能地保存哪些时间值。

当您启用一个或两个时间字段时,该值当然会被保存。对于没有设置时间选项的字段,将保存 00:00:00

模板化

元素查询

⚠️ 在您的条目查询中使用日期范围字段是可能的,但需要站点运行 MySQL 5.7 或更高版本PostgreSQL 9.3 或更高版本

示例

{% set events = craft.entries.section('events').isFuture('dateRangeFieldHandle')  %}

插件包括 isOnGoing()isPast()isNotPast()isFuture() 查询行为。您可以将 true 作为查询的第二个参数传递,以包括今天发生的未来/过去/正在进行的查询中的事件。

字段值

当在模板中使用此字段时,您可以访问 startend 属性,以及

  • getFormatted():它可选地接受一个日期时间格式(例如:'d/m/Y')作为第一个参数和一个分隔符字符串作为第二个(例如:' until ')。
  • isPast:如果 end 属性早于当前日期和时间,则返回 true
  • isFuture:如果 start 属性晚于当前日期和时间,则返回 true
  • isOnGoing:如果 start 属性晚于当前日期和时间 并且 end 属性早于当前日期和时间,则返回 true

getFormatted()

使用 getFormatted() 函数时,您可以以两种方式传递参数

  1. 日期格式和一个分隔符字符串(例如:entry.dateRangeHandle.formatted("d/m/Y Hi", "until"|t)
  2. 一个包含 datetime 键的数组和一个分隔符字符串(例如:entry.dateRangeHandle.formatted({ date: 'd/m/Y', time: 'H:i:s'}, 'tot'|t)

使用第二种选项,字段可以分别输出日期和时间,当开始和结束日期相同时,它只会输出一个,使用开始和结束时间的时间格式(例如 30/04/2020 11:00 until 16:00)。

GraphQL

该字段完全支持 Craft 的 GraphQL api,该 api 于 Craft CMS 3.3 中添加。您可以访问与 Twig 中相同的属性,您还可以使用 Craft 的 @formatDateTime 来更改日期格式。

query{
  entries(
   section: "events",
   isFuture: ["dateRangeFieldHandle", true]
  ) {
    title
    ... on events_events_Entry {
      dateRangeFieldHandle {
        start
        end @formatDateTime(format: "d M Y")
        isPast
        isOnGoing
        isFuture
      }
    }
  }
}

Studio Espresso 提供