8fold/php-events

一个方便跟踪和显示事件的库

0.6.0 2022-07-23 22:37 UTC

README

事件显示一个网格视图,模仿日历的年和月。

事件设计为尽可能快、直接地响应用户请求。

安装

composer require 8fold/php-events

用法

我们将8fold事件分为内容(数据)和用户界面(UI)。

这意味着您可以为UI开发自己的代码,并使用提供的扁平文件对象通过Events类查询和检索数据。

您也可以通过Grid类使用基于网格的UI,并提供自己的CSS和JavaScript。

或者,您可以使用dist文件夹中提供的CSS和JavaScript。用于生成它们的实现分别位于sassjavascript文件夹中。

仅内容

Events::fold("/path/to/content-root");

为了最佳性能,请从Events类开始,该类用作代表文件的缓存的实例的容器。这些文件是懒加载的。

UI(含内容)

您可以显示月份(常用)或年份视图。

使用unfold方法查询并渲染内容。

对于月份视图

Grid::forMonth("/events/{year}/{month}")->unfold();

或者,对于年份视图

Grid::forYear("/events/{year}")->unfold();

对于基本路由或页面(/events),我们建议您将用户重定向到月份或年份视图。Events类有方便的方法来查找有事件的下一个月或上一个月,或者,最快的方法是将用户重定向到当前年份的当前月份或仅当前年份。

月份视图将提供链接到有事件的下一个和上一个月,无论年份如何。年份视图将显示该月的事件数量,视图还将提供链接到有事件的下一个或上一年份。

内容文件夹结构

8fold事件依赖于特定文件夹结构的数据方面。根文件夹可以放在任何你想放的地方,只要PHP可以访问那个文件夹。

.
└── root/
    └── {year}/
        └── {two-digit month}/
            ├── {two-digit day}.event
            └── {two-digit day}_{1-n}.event

生产示例

.
└── root/
    └── 2020/
        └── 01/
            ├── 01.event
            ├── 02.event
            ├── 02_2.event
            ├── 03_1.event
            └── 03_2.event

每一天由一个或多个.event文件表示,这些文件是纯文本的markdown文件。对于有多个事件的日期,你可以在文件名中添加后缀,从下划线开始,并指定它们在模态弹出窗口中应出现的顺序;具有后缀_1是可选的。