我在drupal中有多种内容类型,它们都使用不同的日期字段。一个是使用blog_date和第二个post_date。当我在一个视图中合并它们并尝试按多个排序标准排序时,它们总是按第一个排序。即如果我先按blog_date排序,那么所有博客类型的帖子都会出现,并且只有在帖子类型的帖子跟随其排序标准之后才会出现。
是否可以将这两个数据字段合并为一个,然后对全局排序?
答案 0 :(得分:0)
我找到了许多可能的解决方案并在此汇总:https://drupal.org/node/2133879
但是,这是一个我建议的简单解决方案:
在自定义模块中,使用hook_views_query_alter()函数更改排序条件以使用CASE ... WHEN在orderby条件中添加条件。这里显示了一个很好的例子:
<?php
/**
* Implementation of hook_views_query_alter().
*/
function MYMODULE_views_query_alter(&$view, &$query) {
if ($view->name == 'view_name') {
// Completely replace current orderby
$query->orderby = array(" CASE
WHEN node_data_field_dates_field_dates_value THEN node_data_field_dates_field_dates_value
WHEN node_data_field_event_dates_field_event_dates_value THEN node_data_field_event_dates_field_event_dates_value
END ASC ");
}
}
?>