いっしきまさひこBLOG

AI・機械学習関連、Web制作関連、プログラミング関連、旅行記録などなど。一色政彦。

MTの複数のブログでテンプレートを共有するには?

Movable Typeで複数のブログを持っている場合、ブログの表示に問題があると、同じ修正をすべてのブログに行う必要があります。例えば、本サイトのブログでいえば、#BLOG、IT+、Diaryなど複数のブログがありますが、コメント書き込みのページ(Comment Listing Template)に問題がある場合には、これらのすべてのブログのComment Listing Templateを修正しなければなりません。

このような場合、テンプレートをファイルで管理するようにすれば、先ほどの例のように全ブログのテンプレートを変更する必要はなくなります。

つまり、全ブログのテンプレート(例えば「Comment Listing Template」)を1つのファイル(例えば「cmntlist.txt」)で管理すれば、1つのブログでテンプレート(「Comment Listing Template」)を変更するだけで、実際のテンプレート内容のファイル(「cmntlist.txt」)が書き換わるので、それを参照しているほかのブログのテンプレート(「Comment Listing Template」)も自動的に更新されるのです。

具体的な手順を「Comment Listing Template」を例に解説します。ほかのテンプレートでも手順は同じです。

(1)「Comment Listing Template」のテンプレートの編集を開きます。

(2)「このテンプレートにリンクするファイル」に、完全パスで、サーバー上のファイル パスを指定します。

ファイル パスは自由です。

もし指定したパスにファイルがなければ、そのパスの場所にファイルが自動生成されます。

ファイルを置くフォルダがない場合、どうなるか確認していないのでわかりません。ただし、無用のトラブルを避けるため、フォルダは手動で作っておくか、既存のフォルダを指定した方がよいでしょう。

以下の画面の例では「/home/www/public_html/blog/html_templates/cmntlist.txt」を入力しています。

filetmpl.gif

(3)[保存]ボタンをクリックする

(4)念のため、「テンプレートの中身」をコピーして、ローカル ディスクにファイルとして保存しておきましょう。

すべてのブログのテンプレートで、(1)~(3)の処理を行ってください。

なお、最後に処理したテンプレートの内容がファイルに保存されるので注意してください。

例えば、最後に保存したテンプレートが空だった場合、ファイルの中身も空になってしまいます。

その場合は、(4)で保存しておいた内容を、最後に保存するテンプレートの内容に入力するとよいでしょう。

以上で完了です。

1つのブログのテンプレートを書き換えると、ほかのブログのテンプレートも書き換わるのを確認してください。

この例で示した「Comment Listing Template」はリビルドしなくてよいテンプレートですが、インデックス・テンプレートやアーカイブ・テンプレートの場合はすべてのブログでリビルドが必要になります。このリビルドだけはすべてのブログで個別に行う必要があります。

【TIPS】

テンプレートの種類の1つとして、テンプレート全体ではなく、一部分だけを再利用するための、テンプレート・モジュールというのがあります。[Templateの編集]の一番下の欄です。これを使えば、すべてのページで共通する部分を1つのテンプレートで管理できるようになります。実際、本サイトでは、すべてのページで「上の部分」と「下の部分」が共通しているので、それぞれ「top_layer」と「btm_layer」というテンプレート・モジュールで管理しています。このため、例えば「top_layer」を変更してリビルドするだけで、ブログ全体の「上の部分」を変更できます。

ただしテンプレート・モジュールの弱点は、1つのブログ内でしか再利用できないことです。

しかし、テンプレート・モジュールでも、ほかのテンプレート同様に「このテンプレートにリンクするファイル」の機能を利用することができます。やり方も同じです。つまり、この記事に書いた「ファイルを使ったテンプレートの共有」をテンプレート・モジュールで行うことで、すべてのブログでも再利用できるようになります。私のサイトでは、これは非常に役立ちました。

この「ファイルによるテンプレート共有」は、圧倒的にメンテナンスの手間が減るので、非常にお勧めです。