phpbbのtemplateの構造
phpbb3.2を使っています。
phpbbをカスタマイズして掲示板サイトを作ったのですが、開発当初は構造を把握するのが大変だったししばらく触っていないと忘れそうなので、ここに残しておこうと思います。
どのテンプレートファイルを使っているのか
以下のようにテンプレートファイル名を指定してるところがあると思います。
$template->set_filenames(array(
'body' => 'index_body.html')
);
index_body.html
はどこかというと、./styles/prosilver/template/index_body.html
ここにあります。
※prosilver
はデフォルトのスタイルです。
<!-- INCLUDE overall_header.html -->
いきなりこういうのがあるのですが、こういう系の記述は他にもあって簡単にまとめるとこんな感じです。
記述 | 意味 |
---|---|
<!-- INCLUDE something.html --> | 'something.html'を読み込む |
<!-- EVENT something --> | 拡張機能でここに入れたいテンプレートを読み込む |
<!-- IF something --> | if文書くとき |
<!-- BEGIN something --> | loop書くとき |
他にもありますが、上記がよく見るやつ。
詳しく知りたい方は以下のリンクなど参照してください。
Template_syntax
補足
EVENTに関して
拡張機能は、./ext/
配下に配置するのですが、./ext/steve/postreactions/styles/prosilver/template/event/
って感じでtemplate
フォルダの下のevent
フォルダにある、<!-- EVENT something -->
に記述されているのと同様のファイル名のテンプレートが読み込まれます。
例えば、<!-- EVENT overall_header_navigation_append -->
だったら、./ext/steve/postreactions/styles/prosilver/template/event/overall_header_navigation_append.html
がそこに読み込まれます。
拡張機能に関してはまた別で記事書こうかなと思います。多分。
テンプレート内で使う変数に関して
これ最初知らなくて引っかかったので書いておきます。
テンプレート内で使う変数は大文字じゃないといけないんですね。
// Assign index specific vars
$template->assign_vars(array(
'TOTAL_POSTS' => $user->lang('TOTAL_POSTS_COUNT', (int) $config['num_posts']),
'TOTAL_TOPICS' => $user->lang('TOTAL_TOPICS', (int) $config['num_topics']),
'TOTAL_USERS' => $user->lang('TOTAL_USERS', (int) $config['num_users']),
って感じで。
ここTemplate_Systemに template variable names are always all-uppercase
って書いてあります。
テンプレート内では{L_SOME_VARIABLE}
こう使います。
ドキュメント見ないでやっていたので、これに気づくまでに無駄な時間を費やしました...。
終わりに
phpbbのカスタマイズしていて思ったのが、日本語の検索結果がとても少ないことです。
なので今まで知ったことを備忘録的な役割も含め書いていこうと思います。