Drupal 5 で静的 node を表紙にする場合の BK
Drupal では「管理 > サイト設定 > サイト情報」の「デフォルトの表紙」でトップページを設定することができます。たとえばここを node/1
などにすれば1番の node が表紙として表示されることになります。
デフォルトの表紙は node
で,contemplate をインストールするとわかりますが,frontpage
という(内蔵)ビューを使っています。それはさておき,デフォルトの表紙ページを使うと,
- サイト名 | サイトスローガン
という title
が使われます(サイトスローガンがある場合)。一方,通常の node 等を表示した際の title
は,
- node のタイトル | サイト名
のようになります。
ですので,「デフォルトの表紙」でデフォルト値以外を設定すると,
- node のタイトル | サイト名
になってしまいます。これをなんとかデフォルトの挙動に揃えたい。
これはどこが制御しているのかというと,実は theme なんですね。デフォルトの garland というテーマは PHPTemplate を下位で使用しているので,実際にはそのエンジンが設定しています。
# themes/engines/phptemplate/phptemplate.engine: 183-
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', '');
}
}
$variables = array(
# ...... snip ......
'head_title' => implode(' | ', $head_title),
このようなコードになっていますので,ページにタイトルがついている場合は必ず上記のような title
になります。
じゃあ theme を自分で書くしかないのか?
と思いますが,Drupal も TMTOWTDI。上記のコードをニラんでいて考え付いた案。
それは,node(等)の題名を「0」にする,ことです。こうすると上記の判定部で「タイトルがない」と判断され,デフォルトと同じようなサイトスローガン付き title
になります。おまけ?で node のタイトル(<h2>
)も空になりますが,静的なページを表紙にしたいのなら,それはそれで便利かな,と思います。