web-dev-qa-db-ja.com

ページタイトルをいじるPHPブロック

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;
}

どんな助けでも大歓迎です。

1
Sebweb

そのため、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

0
burnsjeremy