2

我在 drupal 中有多种内容类型,它们都使用不同的日期字段。一个是使用 blog_date 和第二个 post_date。当我将它们合并到一个视图中并尝试按多个排序标准进行排序时,它们总是按第一个排序。即,如果我首先按 blog_date 排序,所有博客类型的帖子都会出现,并且只有在该帖子类型的帖子之后才会遵循它们的排序标准。

是否可以将这两个数据字段合并为一个,然后全局排序节点?

4

1 回答 1

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 ");
  }
}
?>

示例来源:https ://drupal.org/comment/6323288#comment-6323288

于 2013-11-20T20:53:11.297 回答