2

drupal に複数のコンテンツ タイプがあり、両方とも異なる日付フィールドを使用しています。1 つは blog_date を使用し、2 番目は post_date を使用しています。それらを 1 つのビューにマージし、複数の並べ替え基準で並べ替えようとすると、常に最初の基準で並べ替えられます。つまり、最初に blog_date で並べ替えると、すべてのブログ タイプの投稿が表示され、その後で初めて投稿タイプの投稿が並べ替え基準に従います。

これらの 2 つのデータ フィールドを 1 つにマージしてから、ノードをグローバルに並べ替えることはできますか?

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 に答える