如何修改Drupal 7事件日历周视图以包括星期日?

时间:2016-11-14 20:49:24

标签: calendar drupal-7

我是Drupal 7的新手,我遇到一个问题,即事件日历周视图不显示星期日事件,因为查询中的结束日期不正确。实际上它只显示6天。我该如何修改查询?我怎样才能找到它的生成位置?

以下是“事件日历(内容)”页面中的查询。你可以看到开始日期比较是“> ='2016-11-14 00:00:00”结束日期比较是“< ='2016-11-20 00:00:00'”,这不是'检索周日发生的事件。我需要将其更改为“< ='2016-11-20 23:59:59'”。

更改一周的第一天也无济于事,因为它只是将六天的时间框架改为周日开始,并且错过周六和周日的活动。

选择field_data_field_event_date.delta AS field_data_field_event_date_delta,field_data_field_event_date.entity_id AS date_id_field_event_date,field_data_field_event_date.delta AS date_delta_field_event_date,node.nid AS NID,field_data_field_event_date.language AS field_data_field_event_date_language,field_data_field_event_date.bundle AS field_data_field_event_date_bundle,field_data_field_event_date.field_event_date_value AS field_data_field_event_date_field_event_date_value,field_data_field_event_date.field_event_date_value2 AS field_data_field_event_date_field_event_date_value2,field_data_field_event_date.field_event_date_rrule AS field_data_field_event_date_field_event_date_rrule,node.title AS node_title, '节点' AS field_data_field_event_date_node_entity_type, '节点' AS field_data_body_node_entity_type, '节点' AS field_data_field_event_cat_node_entity_type 从 {node}节点 LEFT JOIN {field_data_field_event_date} field_data_field_event_date ON node.nid = field_data_field_event_date.entity_id AND field_data_field_event_date.entity_type ='node' WHERE(((DATE_FORMAT(field_data_field_event_date.field_event_date_value2,'%Y-%m-%d%H:%i:%s')> ='2016-11-14 00:00:00'和DATE_FORMAT(field_data_field_event_date.field_event_date_value ,'%Y-%m-%d%H:%i:%s')< ='2016-11-20 00:00:00'))AND(((node.status ='1')) )) ORDER BY field_data_field_event_date_field_event_date_value ASC

1 个答案:

答案 0 :(得分:1)

我会首先检查你的区域设置,因为你可以改变那里的第一天,只是在那里重新获得价值 - 可能再次尝试开关,在星期一和星期日之间切换。 /管理/配置/区域/设置

其次,您是否检查了模块本身是否存在此问题?可以在其发布队列下发布补丁。

如果所有其他方法都失败了,您可以在自定义模块中使用hook_views_query_alter来修改生成的查询的where子句。我在之前发现的here这个钩子上写了一篇博文,但基本上你有查询的所有组件,所以可以改变你需要的东西。例如。

 // add the condition of greater than current timestamp
 $date = gmdate('Y-m-d H:i:s');
 $view->query->where[1]['conditions'][] = array(
   'field' => 'field_mytimefield_value',
   'value' => $date,
   'operator' => '>='
 );