web-dev-qa-db-ja.com

引数に基づくビューの動的な順序付け

私はこれが可能だと確信しています、私はそれに取り組む最善の方法についていくつかのアドバイスを探しています。

ここに状況があります:

英語のコンテンツがあります。ユーザーがオーストラリアにいる場合は、すべてのコンテンツを表示し、オーストラリアのタグ付きコンテンツを上部に貼り付けますにします。ユーザーが別の英語圏の国から来ている場合はすべてのコンテンツを通常の新しい順に表示します。

現在、locations.moduleを使用してコンテンツにLocationsタグを付けています。セッションに格納されているユーザーの国を識別するコードをhook_initに持っています。

Locations.moduleのビューの引数サポートへの引数を使用することはこれを行うための最良の方法ですが、それがより適切であれば、分類法のような別のソリューションを喜んで使用できます。

このようなビューを構成するための最良の方法についてのアイデアはありますか?

2
cam8001

最終的に、このコードを使用して目的の機能を取得しました。

function mymodule_views_query_alter(&$view, &$query) {
  // in my case I'm pulling info from the user object to decide the sort,
  // but obviously you could check anything here. Use arg($x) to read URL arguments.
  global $user;
  if ($user->country == 'AU') {
    // Note in this case NULL is above AU, so descending order it is.
    $query->orderby = array_merge(array('location_country DESC'), $query->orderby);
  }
}

これを行うための適切な方法に関する他の考え、特に hook_views_pre_execute を使用してビューに並べ替えオブジェクトを追加する際のガイダンスを聞きたいです。

3
cam8001