最終的にdb_query()を使用してSQL UNIONを作成し、theme()関数を使用してページャーを含むテーブルレイアウトにレンダリングしました。
ユーザーにとっては、デフォルトのビューのように見えます。もう1つの利点は、クエリを大幅に最適化できることです。私は「私の友人の活動」を示しています。あなたがそのためにビューを使用する場合、あなたの友人のリストを作成し、50以上または100以上のレコードがある場合は非常に遅いSQL「IN」句で使用します。
その友人のリストを、過去x日間にサイトにログインした人だけに絞り込むことができました。
これはコードサンプルです。
// Two queries are required (friendships can be represented in 2 ways in the
// same table). No point making two db calls though so a UNION it is.
// Build up the first query.
$query = db_select('flag_friend', 'f')
->condition('f.uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query->addExpression('f.friend_uid', 'uid');
$query->innerJoin('users', 'u', 'u.uid = f.friend_uid');
// Build up the second query.
$query2 = db_select('flag_friend', 'f')
->condition('f.friend_uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query2->addExpression('f.uid', 'uid');
$query2->innerJoin('users', 'u', 'u.uid = f.uid');
// Return the results of the UNIONed queries.
return $query->union($query2)->execute()->fetchCol();