s1lentium / craft-recurring-dates
这是一个用于Craft CMS的插件,用于添加重复日期功能
dev-master
2017-11-23 08:58 UTC
Requires
- simshaun/recurr: ^2.2.3
This package is auto-updated.
Last update: 2024-09-18 18:56:03 UTC
README
我仍然需要帮助进行测试和修复bug。如果您发现任何问题,请在Github issues中提出。谢谢
这是一个用于Craft CMS的插件,用于添加重复日期功能。它添加了一个名为高级日期的新字段类型,具有重复日期功能。它将重复日期和规则存储在数据库中,并将日期数组返回到twig模板。我使用了Recurr库,由simshaun编写,用于构建和解析rrule。
###安装
- 将此项目克隆到
your_craft_dir/craft/plugins/recurringdate
- 从getcomposer.org 安装Composer
- 在
recurringdate
目录中运行composer install
或php composer.phar install
以安装依赖项 - 通过Craft管理面板安装插件
###使用
- 将新的高级日期字段类型添加到您的某个部分
- 输出可以是日期数组和与之关联的条目,或者用于设置日期规则的值的数组。输出取决于您如何查询日期
- 多日期查询可用于自动排序和筛选相应的日期。我构建这个是为了考虑到需要一个重复日期的事件日历。
####示例输出使用 - 多日期查询
{% set query = craft.entries.section('events').relatedTo(craft.categories.slug('your-slug')) %}
{% set events = craft.recurringdate.dates('yourFieldHandle',
{
'limit': 3,
'before': '12/22/2014',
'after': 'now +1 months',
'criteria': query
})
%}
{% for event in events %}
{{ event.date.start|date("n/j/Y") }}{{ event.date.end ? ' -- ' ~ event.date.end|date("n/j/Y") }}<br>
{% endfor %}
####craft.recurringdate.dates
的参数
- 字段句柄 - Craft CP中字段的句柄
选项数组中的值 - 参见上面示例的使用方法
limit
- 限制返回的条目数量order
- 'ASC' 或 'DESC' - 默认为 'ASC'group
- null, 'day', 'month', 或 'year' - 以下为分组信息before
- null,或PHP的strtotime函数接受的日期字符串after
- null,或PHP的strtotime函数接受的日期字符串criteria
- 由Craft条目查询返回的ElementCriteriaModelexcludes
- 如果应尊重排除的日期 - 默认为true
####多日期查询可用的输出属性
date
- 包含重复日期所有信息的数组id
- 日期的ID,用于在序列中查询正确的日期elementId
- 与此日期关联的Craft条目的IDstart
- 包含开始日期的字符串end
- 包含结束日期的字符串,如果已设置start_time
- 包含开始时间的字符串,如果已设置end_time
- 包含结束时间的字符串,如果已设置allday
- 如果日期全天有效repeats
- 如果日期重复rrule
- 用于构建日期的RRULE字符串
entry
- 与此日期关联的条目
####关于使用分组的多日期查询的信息。分组查询将返回与常规查询不同的结构。其结构如下所示
array(
'grouped_date_string' = array(
array('date', 'entry'),
array('date', 'entry'),
...
),
'grouped_date_string2' = array(
array('date', 'entry'),
array('date', 'entry')
),
...
)
####使用日期ID进行单日期查询的示例输出使用
{% set row = craft.recurringdate.date(id) %}
{% set date = row.date %}
{% set entry = row.entry %}
{{ entry.title }}<br>
{{ date.start_date|date("n/j/Y H:i:s") }}{{ date.end_date is defined ? ' -- ' ~ date.end_date|date("n/j/Y H:i:s") }}
####可用于单日查询的输出属性 单日查询只会返回一个包含指定ID行中的日期
和条目
的数组。其思路是,您将使用多日期查询列出日期的ID,然后根据该ID选择要显示的特定日期。
####示例输出用法 - 单条条目
{% set date = entry.advanced_date_field_name %}
{{ date.start_date|date("n/j/Y H:i:s") }}{{ date.end_date is defined ? ' -- ' ~ date.end_date|date("n/j/Y H:i:s") }}
####每个高级日期字段可用于输出的属性 - 单条条目
start_date
- Craft DateTime对象 - 事件设置的开始日期start_time
- Craft DateTime对象 - 与start_date
相同end_date
- Craft DateTime对象 - 事件设置结束日期,如果未设置,则可以是nullend_time
- Craft DateTime对象 - 与end_date
相同allday
- 布尔值 - 如果事件是一整天的事件repeats
- 布尔值 - 如果事件重复frequency
- 字符串 - 重复频率,'daily'(每日), 'weekly'(每周), 'monthly'(每月), 'yearly'(每年)interval
- 整数 - 重复间隔,1-31的整数weekdays
- 数组 - 事件发生的星期几,如果间隔不是每周,则未定义,'SU'(星期六), 'MO'(星期一), 'TU'(星期二)等...repeat_by
- 字符串 - 按星期几或月份几重复,如果间隔不是每月,则未定义,'week'(星期), 'month'(月份)ends
- 字符串 - 事件结束方式,'never'(从不), 'after'(之后), 'until'(直到)count
- 整数 - 此事件发生的次数,如果ends
不是'after',则未定义until
- Craft DateTime对象 - 事件结束的日期,如果ends
不是'until',则未定义rrule
- 用于构建规则的RRULE字符串