我是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
答案 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' => '>='
);