Recurring events/zh-hans | |
---|---|
在wiki页面内静默设置循环语义数据 | |
进一步的信息 | |
提供方: | Semantic MediaWiki |
最低版本: | 1.5.0 |
最高版本: | still supported |
函数: | yes |
标签: | no |
名称: | #set_recurring_event
|
目录 | |
Contents |
循环事件(recurring event,也称重复事件)是根据预定义规则,出现不止一次的任何事件,如周会、周年纪念日以及生日等等。
在Semantic MediaWiki当中,反复出现性事件的日期是利用放在代表相应事件的页面当中的解析器函数#set_recurring_event
来定义的,
此函数采用下列变量(不论次序):
- property(属性):为所有取值所设定的日期型属性
- start(起始日期):当前系列的第一个日期
- end(结束日期):当前系列的最后一个日期(可选)
- unit(单位):事件发生频率的时间单位;选项有'year'(年)、'month'(月)、'week'(周/星期)和'day'(天)(可选;默认值为'day')
- period(周期):一次发生与下次发生之间的时间单位数量(可选;默认值为1)
- week number(周次):如果单位设置为'month',此参数表示该事件会发生在每个月的第几个周几,如每个月第一个周四/星期四。负整数(-1到-4当中的任何一个)表示该事件会发生在每个月倒数的第几个周几,如倒数第二个周一/星期一。实际的周几是由起始日期来定义的。请注意:此选项的使用需要SMW 1.5.0.a版及其以上版本。
- include(包括):当前系列之中所要额外包括的任何日期;采用英文分号(;)分隔(可选)
- exclude(排除):当前系列之中所要排除的任何日期;采用英文分号(;)分隔(可选)
如果未设定结束日期,保存的就会是固定数量的日期;
这个数值是由$smwgDefaultNumRecurringEvents
来规定的,且默认值为100。
可采用该函数来保存的日期还有一个最大数量,无论所指定的起止日期是什么。
该数值是由$smwgMaxNumRecurringEvents
来规定的,且默认值为500。
可在您的LocalSettings.php文件里面对这两个数值进行修改。
示例[edit]
如下调用定义的是2010年1月4日至2011年6月8日之间的所有星期一所组成的集合,而其中的例外就是2010年3月15日和2010年3月22日,二者分别为之后的星期二(即2010年3月16日和2010年3月23日)所取代:
{{#set_recurring_event:property=Has date |start=January 4, 2010 |end=June 8, 2011 |unit=week |period=1 |include=March 16, 2010;March 23, 2010 |exclude=March 15, 2010;March 22, 2010 }}
如下调用定义的是一个人从其生日开始的所有生日; 这是通过为所定义的属性"Property:Has date of birth"选择在某个页面上所输入的日期来完成的:
{{#set_recurring_event:property=Has birthday |start={{#show:{{PAGENAME}}|?Has date of birth}} |unit=month |period=12 }}
如果将此类调用放在某个模板里面,并将生日作为某个模板字段来输入,则相应的代码写起来可能会更简单:
{{#set_recurring_event:property=Has birthday |start={{{Date of birth|}}} |unit=month |period=12 }}
分别存储每个事件[edit]
解析器函数#set_recurring_event
的这种方法的确方便,但因为SMW查询语法,它会造成若干的限制:
最值得注意的就是,无法查询或显示那些发生在某个特定日期范围之内的事件(occurrences)。
还有另外一种备有函数可以使用,其允许进行更加精确的查询:即Semantic Internal Objects(语义内部对象)扩展所定义的解析器函数。
详情请参见这里。