使用例:ユーザーがプライベートメッセージ( privatemsg モジュールから)を表示しているときに、以下を表示したいと思います。
送信者には受信者の値が表示され、受信者には送信者の値が表示されます。これを実装するにはどうすればよいですか?
これまでにわかったこと:
そのままでは、privatemsgは Panels でオーバーライドできません。 Panelizer プロジェクトもペインを追加できません。いくつかの作業が行われた Privatemsg Panels サンドボックスプロジェクトがありますが、より主流で保守可能なソリューションが必要です。
PrivatemsgビューのD7バージョンでの作業は現在停止しています。
pm_existing_pages プラグインを介して Privatemsg Panels プラグインに D7 Patch を実装したところ、非常にうまく機能しました! Drupal 7の場合、以下のようになります。
編集-情報を追加します!
Privatemsg Theming Documentation をご覧ください。 phptemplate _で始まるすべての関数は、独自のテーマでオーバーライドできます。例:これをtemplate.phpファイルにドロップします
_function YOURTHEMENAME_privatemsg_list_field__participants($variables) {
$thread = $variables['thread'];
$field = array();
if ($thread['has_tokens']) {
$message = privatemsg_message_load($thread['thread_id']);
}
if (!isset($message)) {
$message = privatemsg_message_load($thread['thread_id']);
}
$participants = _privatemsg_generate_user_array($thread['participants'], -4);
$field['data'] = theme('user_picture', array('account' => $message->author));
$field['data'] .= '<div class="user-name">'. _privatemsg_format_participants($participants, 3, TRUE).'</div>';
$field['class'] = 'privatemsg-list-participants';
return $field;
}
_
これにより、ユーザーの画像が受信者フィールドに追加されます。驚くばかり!オーバーライドされた機能ごとに、3つのものが返されることを期待していることを覚えておいてください。フィールド、ヘッダーテーマパターン、フィールドテーマパターン-ドキュメントでは、私よりもよく説明されています;)
function YOURTHEMENAME_form_alter()
フックを使用してオーバーライドできます。この関数をtemplate.phpに追加する場合は、dsm($form_id); dsm($form);
をドロップして、使用しているフォームを正確に把握してください。カスタム列を出力に追加する方法については少し議論がありましたが、まだそこにはいません。そのためには Privatemsg Issue Queue を指摘する必要があります。
幸運を!
うん、Privatemsgは実際にはビューやパネルの世界と統合されていません。
ただし、これを実装するのに十分なフックとテンプレートがあります。 privatemsg_message_view_alter() を使用して、メッセージボディにレポートリンク(例としてpm_block_user.moduleを参照)などを追加できます。また、 privatemsg-view.tpl.php テンプレートファイルをオーバーライドして、全体をカスタマイズできます。