studioespresso / craft-date-range
日期范围字段
Requires
- php: ^8.2
- craftcms/cms: ^5.0.0-beta.1
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
This package is auto-updated.
Last update: 2024-08-29 14:35:51 UTC
README
这就是它的意思 :)。此字段在一个字段中提供开始和结束日期。
需求
此插件需要 Craft CMS 3.0.0 或更高版本。
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的 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
作为查询的第二个参数传递,以包括今天发生的未来/过去/正在进行的查询中的事件。
字段值
当在模板中使用此字段时,您可以访问 start
和 end
属性,以及
getFormatted()
:它可选地接受一个日期时间格式(例如:'d/m/Y')作为第一个参数和一个分隔符字符串作为第二个(例如:' until ')。isPast
:如果end
属性早于当前日期和时间,则返回true
。isFuture
:如果start
属性晚于当前日期和时间,则返回true
。isOnGoing
:如果start
属性晚于当前日期和时间 并且end
属性早于当前日期和时间,则返回true
。
getFormatted()
使用 getFormatted()
函数时,您可以以两种方式传递参数
- 日期格式和一个分隔符字符串(例如:
entry.dateRangeHandle.formatted("d/m/Y Hi", "until"|t)
) - 一个包含
date
和time
键的数组和一个分隔符字符串(例如: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 提供