Phpブロックにprivatemsgモジュールのメッセージ送信フォームを追加しました。正常に機能していますが、ページタイトルとメタタグタイトルに、ノードタイトルではなく「新しいメッセージを(ユーザーuid)に書き込む」と表示されるようになりました。
これはphpブロックのコードです:
`<?php
module_load_include('pages.inc','privatemsg');
$node = node_load(arg(1));
$recipients = strip_tags($node->uid);
$subject = 'custom subject';
print '<div class="custom-msg">';
print drupal_render(drupal_get_form('privatemsg_new', recipients,
$subject));
print "</div>";`
なぜこれが起こっているのか理解できません。Drupalは初めてです。
ありがとうございました。
[〜#〜] update [〜#〜]
@burnsjeremyが提案したようにカスタムモジュールを作成しました。それは機能しますが、同じエラーが発生しています。コードのコメント行を確認してください。
<?php
module_load_include('pages.inc','privatemsg');
function seb_privatemsg_block_info(){
$block['seb_msg'] = array(
'info' => t('Seb Private Msg'),
'cache' => DRUPAL_NO_CACHE
);
return $block;
}
/**
* Implements hook_block_view().
*/
function seb_privatemsg_block_view($delta = '') {
$block = array();
$block['subject'] = '';
$block['content'] = seb_privatemsg_content();
return $block;
}
function seb_privatemsg_content() {
$node = node_load(arg(1));
$recipient = strip_tags($node->uid);
$subject = 'custom subject';
$output = '';
// if i comment the following line the title is correct
$output .= drupal_render(drupal_get_form('privatemsg_new', $recipient, $subject));
return $output;
}
どんな助けでも大歓迎です。
そのため、privatemsgの問題キューでこれに関する問題を見つけました。基本的に、フォームがこのように埋め込まれていると、ページタイトルが上書きされます。したがって、フォームを呼び出す前に以下のコードを使用してタイトルを保存し、後でタイトルを保存したタイトルに戻す必要があります。
// Save the title.
$stored_title = drupal_set_title();
// Call the form.
print drupal_render(drupal_get_form('privatemsg_new', $recipients, $subject));
// Set title back to the saved version.
drupal_set_title($stored_title);
さらに調査を行いたい場合は、この問題へのリンクを次に示します。 https://www.drupal.org/node/1621198