用事件标记日期而不是显示事件

时间:2011-08-31 20:00:44

标签: drupal drupal-7 fullcalendar

我正在使用Drupal 7的FullCalendar模块。我想做的不是在日历中显示事件,而是通过粗体标记当天标记有事件的日期(数字),或更改当天(正方形)或其他东西的背景颜色。问题是,我应该在哪些文件中更改以实现此目的?正在浏览大部分文件,但我无法弄明白。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来您可以通过自定义由完整日历模块创建的Jquery日历来实现此目的。要使用fullcalendar执行此操作将意味着编写一些javascript而不是通常的php for drupal。

查看完整日历插件的文档,似乎可以定义一个新视图(这是一个"视图"在javascript中的fullcalendar中,而不是drupal视图),基于现有的月份观点。

http://arshaw.com/fullcalendar/

请参阅基本用法页面,您需要以与以下类似的方式编辑drupal模块中的javascript:

http://arshaw.com/fullcalendar/docs/usage/

在这里,您可以创建一个回调函数eventRender(),在每个事件显示在日历上之前调用它。在此函数中,检查view.name的值以查看当前是否选择了新视图。

使用传递的事件对象计算事件的日期(将事件日期与日期view.visStart进行比较以计算出日期编号N)并使用.fc-上的jquery选择器更改日历的外观天(N)。您可以使用css类来重新设置当天的数字或背景。通过为所有事件返回false,将不会显示包含该事件文本的普通框。

要允许人们查看事件,请设置回调函数以响应dayClick()。使用它来检测一天的点击次数,并通过切换到该特定日期的日期视图来放大。

您可能还需要在viewDisplay上设置回调,以便在日期范围或视图更改时清除额外的css类或日历中的div。

只是更改css以指示事件的替代方法是使用图标在一天内渲染每个事件小div,并使用eventRender文档中提到的qtip悬停效果。 http://arshaw.com/fullcalendar/docs/event_rendering/eventRender/