我在 drupal 中有多种内容类型,它们都使用不同的日期字段。一个是使用 blog_date 和第二个 post_date。当我将它们合并到一个视图中并尝试按多个排序标准进行排序时,它们总是按第一个排序。即,如果我首先按 blog_date 排序,所有博客类型的帖子都会出现,并且只有在该帖子类型的帖子之后才会遵循它们的排序标准。
是否可以将这两个数据字段合并为一个,然后全局排序节点?
我在 drupal 中有多种内容类型,它们都使用不同的日期字段。一个是使用 blog_date 和第二个 post_date。当我将它们合并到一个视图中并尝试按多个排序标准进行排序时,它们总是按第一个排序。即,如果我首先按 blog_date 排序,所有博客类型的帖子都会出现,并且只有在该帖子类型的帖子之后才会遵循它们的排序标准。
是否可以将这两个数据字段合并为一个,然后全局排序节点?
我找到了许多可能的解决方案并在此处进行了总结: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 ");
}
}
?>