drupal 7 views_query_alter if field empty sort with another field

时间:2016-02-03 16:20:57

标签: php sorting drupal drupal-7 hook

我有一个显示NEWS类型的所有内容的视图 新闻有类似的领域:

内容=标题

Scheduler = publish-on

并在排序条件中:我想要排序内容有两个选项: 使用调度程序(publish-on = DESC) 和发布日期

我希望使用调度程序对内容进行排序,当调度程序字段为空时,他会使用发布日期进行排序 我创建了钩子视图查询alter 我有一个问题 如果publishon为空,我如何用条件对字段进行排序,然后用postdate排序

function custom_sort_views_query_alter(&$view, &$query) {


    if($view->name === 'articleview') {
        $view->query->add_where(1,'publish_on',  'NOT IN');
        $view->query->orderby[0]['field'] = "CASE WHEN publish_on IS NULL THEN created ELSE publish_on END";
        $view->query->orderby[0]['direction'] = "DESC";
        $view->query->orderby[1]['field'] = "created";
        $view->query->orderby[1]['direction'] = "DESC";
    }
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您应该使用condition ? value_if_true : value_if_false之类的三元操作,以便放置value_if_true或value_if_false。