MODXのサイトをくまなく見ても、ググってもMODXの親テンプレートについての記載は見つからない。なのでやってみた。これは、すごく便利だ。
親テンプレートを指定してみた
MODX のテンプレート作成時、「親テンプレート」という選択欄がある。MODXのサイトをくまなく見ても、ググってもMODXの親テンプレートについての記載は見つからない。なのでやってみた。
結果は非常に単純明快なものだった。通常、新規にテンプレートを作成すると、空白の入力欄が表示されるが、親テンプレートを指定すると、そのコードの [ *content* ] を除く部分がその子テンプレートに自動的に反映される。
親子の関係
仮に親テンプレートが以下のようなコードだったとする
親テンプレート
<!DOCTYPE html> <html lang="ja"> {{head}} <body> {{navigation}} <main id="contents"> [ *content* ] </main> {{footer}} </body> </html>
このテンプレートを親に指定した子テンプレートを作成すると、空欄ではなく、以下のような入力欄になる。
子テンプレート
<!DOCTYPE html> <html lang="ja"> {{head}} <body> {{navigation}} <main id="contents"><空白の入力欄></main> {{footer}} </body> </html>
親テンプレートの典型的使い方
テンプレートを作成するとき、[ *content* ] 以外の部分をいちいち書くのは面倒だ。なので、HTML の基本構造を親テンプレートとして登録しておき、そのバリエーションとして子テンプレートを作成すれば、その手間を省くことができるし、テンプレート管理がすごく分かりやすいものになる。
典型的には、親テンプレートで、ヘッダー部、ナビ部、フッター部をそれぞれ、head、navigation、foot などとしてチャンク登録し、階層に応じて IF 文で出力を制御しておく。そして、いくつかの子テンプレートでサイトを管理する。たとえば、ホーム用、下階層、下階層の記事一覧表示用の3種類。
これはかなり便利だ。ちょっとテストすれば分かること。いままで使ってこなかったことを、すごくもったいなく感じている。