hashandsalt / kirby-recurr
Kirby 3 循环日期助手
v0.0.7
2023-11-09 16:15 UTC
Requires
- getkirby/composer-installer: ^1.1
- simshaun/recurr: ^4.0
README
此插件集成了Recurr库,使得处理重复日期(如日历上的事件)变得更加容易。
安装
下载
下载并将此仓库复制到 /site/plugins/kirby-recurr
。
Composer
composer require hashandsalt/kirby-recurr
商业使用
此插件是免费的,但如果您在商业项目中使用它,请考虑
使用
使用手动日期作为站点方法
$datelist = $site->recurr('2019-09-10 20:00:00', '2019-09-11 02:00:00', 'WEEKLY', ['WE', 'TH', 'FR'], '2019-10-11');
或使用字段数据
$datelist = $site->recurr($page->estart(), $page->eend()->or($page->estart()), $page->efreq()->recurrfreq(), $page->ebyday()->recurrdays(), $page->erange());
默认情况下,插件返回一个数组,包含每个事件的开始和结束日期。如果您想使用RRule,请在结束时设置为true
$datelist = $site->recurr($page->estart(), $page->eend()->or($page->estart()), $page->efreq()->recurrfreq(), $page->ebyday()->recurrdays(), $page->erange(), true);
结束日期是可选的
$datelist = $site->recurr($page->estart(), null, $page->efreq()->recurrfreq(), $page->ebyday()->recurrdays(), $page->erange());
按日仅在使用频率设置为MONTHLY或YEARLY时使用。
字段方法
按日和频率需要大写,为了方便,有两个字段方法可以为您完成这项工作
$page->efreq()->recurrfreq()
$page->ebyday()->recurrdays()
示例使用
在上面的示例中,我们为其提供开始时间、结束时间、频率、重复的天数以及结束日期。上面的示例每周重复,但仅在星期三、星期四和星期五。然后您可以遍历它
日期/时间数组
<table class="table">
<tr>
<th>Session Start</th>
<th>Session End</th>
</tr>
<?php
$datelist = $site->recurr($page->estart(), $page->eend()->or($page->estart()), $page->efreq()->recurrfreq(), $page->ebyday()->recurrdays(), $page->erange());
foreach($datelist as $event): ?>
<tr>
<td><?= $event['start'] ?></td>
<td><?= $event['end'] ?></td>
</tr>
<?php endforeach ?>
</table>
RRule
如果您正在使用支持RRule的日历(如fullcalender.js),您可以通过以下方式获取它
<?php
$datelist = $site->recurr($page->estart(), $page->eend()->or($page->estart()), $page->efreq()->recurrfreq(), $page->ebyday()->recurrdays(), $page->erange(), true);
echo $datelist;
?>
过滤过去日期
为了方便起见,插件包含一个集合过滤器,可以删除在某个日期之前发生的事件。
$events = $kirby->collection('events')->filterBy($field, 'datebefore', $beforedate);
要查看此功能的工作方式,您可以使用插件提供的代码片段来列出即将发生的事件,假设您有一个名为'events'的集合
<?= snippet('events/upcoming', ['field' => 'estart', 'beforedate' => date('Y-m-d H:i:s')]) ?>
选项
默认时区为 Europe/London
,时间格式为 09-12-19 2:00am
。
您可以在配置中重置这些
'hashandsalt.recurr.timezone' => 'Europe/London',
'hashandsalt.recurr.format' => 'm-d-y g:ia',