s1lentium/craft-recurring-dates

这是一个用于Craft CMS的插件,用于添加重复日期功能

安装: 29

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 6

类型:craft-plugin

dev-master 2017-11-23 08:58 UTC

This package is auto-updated.

Last update: 2024-09-18 18:56:03 UTC


README

我仍然需要帮助进行测试和修复bug。如果您发现任何问题,请在Github issues中提出。谢谢

这是一个用于Craft CMS的插件,用于添加重复日期功能。它添加了一个名为高级日期的新字段类型,具有重复日期功能。它将重复日期和规则存储在数据库中,并将日期数组返回到twig模板。我使用了Recurr库,由simshaun编写,用于构建和解析rrule。

###安装

  1. 将此项目克隆到 your_craft_dir/craft/plugins/recurringdate
  2. getcomposer.org 安装Composer
  3. recurringdate 目录中运行 composer installphp composer.phar install 以安装依赖项
  4. 通过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条目查询返回的ElementCriteriaModel
  • excludes - 如果应尊重排除的日期 - 默认为true

####多日期查询可用的输出属性

  • date - 包含重复日期所有信息的数组
    • id - 日期的ID,用于在序列中查询正确的日期
    • elementId - 与此日期关联的Craft条目的ID
    • start - 包含开始日期的字符串
    • 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对象 - 事件设置结束日期,如果未设置,则可以是null
  • end_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字符串