web-dev-qa-db-ja.com

Privatemsgスレッドの順序をASCからDESCに切り替える方法は?

個別のプライベートメッセージスレッドを表示すると、スレッドメッセージが古いものから新しいものへと表示され、その後に[Reply]フィールドが表示されます。最初に[返信]フィールドを表示し、次にスレッドメッセージを新しいものから最も古いものへと表示します。この方法でページの順序を逆にするにはどうすればよいですか?昇順ではなく降順でテーマを変更するためのコードを見つけることができません。

このようなもの:

[回答欄]

[2017年1月6日11:30 amのメッセージ]

[2017年1月6日11:05 amのメッセージ]

[2017年1月6日の午前10時のメッセージ]

[2017年1月5日11:45 amのメッセージ]

...次のような現在のレイアウト/順序の代わりに:

[2017年1月5日11:45 amのメッセージ]

[2017年1月6日の午前10時のメッセージ]

[2017年1月6日11:05 amのメッセージ]

[2017年1月6日11:30 amのメッセージ]

[回答欄]

3
hockey2112

モジュールをハックする以外に、それを機能させる他の方法はありますか?

フックを提供しない限り、別のphpファイル/モジュールからモジュールを変更する方法はありません。

私は盲目でなければならず、その真上(行1098)にコメントで書かれています:* @see hook_query_privatemsg_messages_alter()

ドキュメントを見つけました hook_query_privatemsg_messages_alter 。フックはモジュール内、より具体的には.moduleファイル内にあり、Word hookをモジュールの実際の名前に置き換えます。

mymodule.moduleの内部にカスタムモジュールを作成します(ここでは、モジュールの名前がmymoduleであると仮定しています)

_/**
 * Implements hook_query_privatemsg_messages_alter().
 */
function mymodule_query_privatemsg_messages_alter($query) {
   $query
     ->orderBy('pm.timestamp', 'DESC')
     ->orderBy('pmi.mid', 'DESC');
}
_

サイドノート:

フックをtemplate_something_something()と混同しないでください。これらは、template.phpファイル内にあります。例: template_preprocess_node そして、Word templateをテーマの実際の名前に置き換えます。


Sssweatはありません。他に1つお邪魔してもよろしいですか?返信ボックスをメッセージスレッドの上に移動します。これがモジュールで処理される場所を見つけました(privatemsg.pages.inc、892および926行目)。 incファイルをハックせずに、これらの2行をどのようにオーバーライドします(「ウェイト」値を調整して、返信ボックスがメッセージスレッドよりも低くなるようにします)。どういうわけかカスタムモジュールで行われますか?

hook_privatemsg_view_alter を使用するとします。

悲しいことに、それは返信やメッセージには機能しません。それでも、Devel配列を使用してdpm($content)をダンプすると、重みが変更されました。ポケットベルでのみ機能します。これはバグのようです。

_/**
 * Implements hook_privatemsg_view_alter().
 */
function mymodule_privatemsg_view_alter($content) {

    $content['pager']['#weight'] = -3; // does not work
    $content['reply']['#weight'] = -5; // does not work
    // nor it does not work when doing $content['message']['#weight'] = -5; 

}
_

モジュールから_$content['pager']['#weight']_ = 3および_$content['reply']['#weight'] = -5;_をコメント化すると、フックが機能します。

3
No Sssweat