Drupal查看多个排序条件

时间:2012-09-25 07:41:32

标签: drupal drupal-6 drupal-modules drupal-views

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

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

1 个答案:

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

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