hashandsalt/kirby-recurr

Kirby 3 循环日期助手

安装: 43

依赖: 0

建议者: 0

安全: 0

星级: 12

关注者: 3

分支: 1

开放问题: 0

类型:kirby-plugin

v0.0.7 2023-11-09 16:15 UTC

This package is auto-updated.

Last update: 2024-09-09 18:12:51 UTC


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',