本書p83の下部のコードについて本書p83の下部のコードについて

本書を購入し、Drupalの学習をしている者です。
まだ学習の初期段階ですが、本書は記述が大変詳しく、とても参考になると感じております。

さて、p83の下部のコードを実行した所、
コンテンツ領域で表示されるタイトルとブラウザのページタイトルが、
他のコンテンツの場合でも、全て「The Page title」になってしまいました。
本書の通り実装すると、そのようになってしまうのか、
それとも、私の側に何か原因があると考えられるのか、
その辺りに関して、アドバイスをいただけますと幸いです。
お手数ですが、よろしくお願い致します。

ある意味誤りですね

Takafumiさんのユーザアバター

この投稿を読み、当該箇所の前後を読み直してみました。
結論はすでに0829さんが回答されているとおりで、このコードは仕様どおりの振る舞いを見せます。 しかしsparrow999さんが仰るとおり、他のページでもタイトルが変更されてしまうのはここでの説明としては正しくないような気がします。

編集時には気がつきませんでしたが、おそらく筆者の勘違いと判断して間違いはなさそうですので、次のように訂正したいと思います。

訂正箇所:
第4章 p.83 ページ下部のコードブロック

誤:

function menufun_title() {
  drupal_set_title(t('The page title'));
  $now = format_date(time());
  return t('It is now @time', array('@time' => $now));
}

正:

function menufun_hello() {
  drupal_set_title(t('The page title'));
  return t('Hello!');
}

このような情報は大変有用ですので、また何かおかしな点を見つけた際にはご報告いただければ幸いです。

Re: 本書p83の下部のコードについて

書籍通りのコードを実行すると、sparrow999 さんのおっしゃる通り、ほぼ全てのページのページタイトル(とブラウザのタイトルバー)が全て「The Page title」となるはず...です。

title callback はメニュー項目を構築する時点で実行されるので、そのメニュー項目が表示される全てのページのタイトルが変更されてしまいます。
ですので、もしも、メニューページ(メニュー項目のリンク先ページ)のタイトルのみを変更したいのであれば、page callback で指定した関数内にページタイトルを設定してみてください。

Re: Re: 本書p83の下部のコードについて

0829さんのコメントを読んで、title callback 関数の挙動がわかりました。
ご説明のとおり、
「drupal_set_title(t('The Page Title'));」を、
page callback 関数内に移動したら、想定通りになりました。

私は、Drupalを学習し始めたばかりですので、
Drupalは私にとってはまだまだ謎だらけですが、
本書を読んで、その謎を少しでも理解できるようにしていきたいと考えております。

今回は、どうもありがとうございました。