Drupal で、ページのタイトルの書式を変えたい。

Drupal 5 からは、テーマのデフォルトのテンプレートのエンジンが PHPTemplate となった。このエンジンを使うと個々のテンプレートにはうまい具合に PHP コードが入っているので、これなら PHP をまったく知らないデザイナーでも少し学習すれば慣れるのではないかと思う(?)。すくなくとも Movable Type におけるテンプレートに入っているあの独特のタグを覚えるにはそれなりに学習カーブがあるのだから、こちらは純粋に言語としての PHP なので、アプローチとしてはこれはこれでよくできていると思う。 さて、この PHPTemplate、タイトルを構成する書式は常に「ページタイトル | サイト名」となるらしい。この Perl Tips もそうなのだが、タイトルの書式は「サイト名 | ページタイトル」である。これは SEO 的にどうなのかという議論はさておき、Movable Type のデフォルトのテンプレートが 「サイト名 | ページタイトル」 であった名残りで、これはこれで日本人の思考の順序(サイト名→ページタイトル)に合ってはいると思う。ググったときも、日本人向けのサイトであるなら、「サイト名→ページタイトル」で検索結果一覧が出るので、私はこの方が親切かなと思っている。私はググったらけっこうどのサイトにあるコンテンツかを見るためだ(Google の PageRank に自分なりのページランクを加味しているといえる)。 さて本題、PHPTemplate エンジンにおいてタイトルを変えるには、まず基本としては https://drupal.org/node/77522 で議論されているように、ページタイトル中の記号「|」を「::」に変えるには、テーマに関連したいくつかあるファイルの中で、template.php というファイルを、
function _phptemplate_variables($hook, $vars = array()) {
  switch($hook){
    case 'page':
      if (drupal_get_title()) {
        $head_title = array(strip_tags(drupal_get_title()), variable_get('site_name', 'drupal'));
      }
      else {
        $head_title = array(variable_get('site_name', 'drupal'));
        if (variable_get('site_slogan', '')) {
          $head_title[] = variable_get('site_slogan', ''); }
      }
     <strong> $vars['head_title'] = implode(' :: ', $head_title);</strong>
      break;
  }
  return $vars;
}
とする。しかしこれだとタイトルは「タイトル::サイト名」のままだったりする。私は「サイト名 | タイトル」の順にしたいのだ。そこで答え。template.php ファイルに以下を追加する(太字のところが、変更点)。
function _phptemplate_variables($hook, $vars = array()) {
  switch($hook){
    case 'page':
      if (drupal_get_title()) {
       <strong> $head_title = array(variable_get('site_name', 'drupal'), strip_tags(drupal_get_title()));</strong>
      }
      else {
        $head_title = array(variable_get('site_name', 'drupal'));
        if (variable_get('site_slogan', '')) {
          $head_title[] = variable_get('site_slogan', ''); }
      }
      <strong>$vars['head_title'] = implode(' | ', $head_title);</strong>
      break;
  }
  return $vars;
}
Page Title というモジュールもあるようだが、このモジュール(は使ったことないが)、Readme.txt を見る限りテーマファイルの中も書き換えなければならないようだ(テーマファイルと一緒に動かすのだから、当然といえば当然だ)。ならば、上記方法も直接テーマファイルをいじるのには変わらないので、あまり凝ったことをしないのであればこちらでいいような気がする。
トラックバック URL: https://perltips.twinkle.cc/trackback/225
Posted on 2007-07-20 by yas |