PHPモジュール化(その2)[MT5]

2010年3月11日

テンプレートモジュールやシステムテンプレートもPHPモジュール化してみようと思いまして。shine

基本的には、ウィジェットのPHPモジュール化のときと同じ要領でした。ただ、入れ子の構造になってるのと、モジュールを読み込む記述を各アーカイブにしなくてはならない部分に注意です。wink

 

テンプレートモジュールをPHPモジュール化

1)今回いじっていこうと思ったテンプレートモジュールは次の4つ。バナーフッター以外は、ソースの中にreadfileの記述がある入れ子構造になってます。解説はバナーヘッダーを例に。

  • バナーヘッダー
  • バナーフッター
  • サイドバー
  • サイドバー2

2)うちのサイトの場合、ヘッダーにはナビゲーションリンクカレンダーがあります。で、デザイン>テンプレートをクリックして、 テンプレートモジュールにある「バナーヘッダー」をクリック。表示されたソースの内容をメモ帳にコピー。

3)デザイン>テンプレートをクリック。インデックステンプレートの下にある「インデックステンプレートの作成」をクリック。下記のように記述して保存。内容に関しては、メモ帳にコピーしたソースの中で各該当のある部分だけを記述。

テンプレートの名前:mm-ナビゲーション
内容:メモ帳に貼り付けたソースから該当記述部分のみをコピー
出力ファイル名:mm-navi.html
テンプレートの名前:mm-カレンダー
内容:メモ帳に貼り付けたソースから該当記述部分のみをコピー
出力ファイル名:mm-calendar.html

3)メモ帳のソースの中で、ナビゲーションリンクとカレンダーの記述部分を、以下のように書き換え。

→ <?php readfile("<$mt:BlogSitePath$>mm-navi.html"); ?>
→ <?php readfile("<$mt:BlogSitePath$>mm-calendar.html"); ?>

4)デザイン>テンプレートをクリック。インデックステンプレートの下にある「インデックステンプレートの作成」をクリック。下記のように記述して保存。内容に関しては、3)で書き換えたソースを記述。

テンプレートの名前:m-バナーヘッダー
内容:3)の記述が埋め込まれたヘッダーのソース
出力ファイル名:m-header.php

5)後は、メインページのソースの該当部分を下記のように変更して再構築。うまいこと表示されたのを確認したら、カテゴリ別ブログ記事リスト,ブログ記事,月別ブログ記事リストの3つも同じように変更する。

<$mt:Include module="バナーヘッダー"$>
↓
<?php include("<$mt:BlogSitePath$>m-header.php"); ?>

サイドバーやサイドバー2については、こんなに大変なことはしなくてええんやけど、すでにウィジェットが埋め込まれている記述がされてるので、同じようにphpで保存し、includeで挿入させました。catface

ところで、コメントとトラックバックは何度やってもエラーが出てうまくいかんかったわ・・・。sweat01

 

検索結果とPHP化

あとは何が残ってるかな・・・といじってたら、検索結果のページだけ反映されてない。

ああ、忘れてたと思い、上記のモジュールを埋め込んでいって確認したら、あら?おかしなことになってる・・・。

これ、このシステムテンプレートって、cgiで動いてたんな・・・。色々やってみたけど、ソースは本(レッスンブック)でいじってしまってるのが原因なのかうまいこといかん。

で、検索結果以外で、コメントプレビューなんかもいじらなアカンっぽいけど、本で簡略化したソースに書き換えてしまってるので、結局は、「検索結果」のみをどうにかすればよいということであった。

で、下記のサイトを見つけました。shine

[参考サイト]

The blog of H.Fujimoto>>コメント/検索関連テンプレートのPHP化(その2)

 

1)こちらのページから、mt-phpincgi.txtの内容をメモ帳にコピーしてmt-phpincgi.phpで保存。そして、MovableTypeをインストールしたフォルダにUP。

2)MovableTypeをインストールしたフォルダの中に、cgitmpという名前でフォルダを作ります。パーミッションを707に設定。

3)デザイン>ウィジェットをクリック。ウィジェットテンプレートの中の「検索」をクリック。formタグのaction部分を下記のように書き換え。

action="<$MTCGIPath$><$MTSearchScript$>"
→ action="<$MTCGIPath$>mt-phpincgi.php"

4)そのformタグの後に次のタグを追加で書き足し。(2段になってるけど1行で。)

<input type="hidden" name="requrl" value="
<$MTCGIPath$><$MTSearchScript$>" />

5)あとは、システムテンプレートの「検索結果」に、readfileやincludeで今までのように読み込むような記述をして再構築で完成。

PHPモジュール化(その1)[MT5]

2010年3月 8日

続いて・・・PHPモジュール化です。

以下のサイトを参考にさせていただきました。

[参考サイト]

 

何をモジュール化するか

ようは、変更が頻繁に行われるような箇所を取り出してモジュール化するといいみたいです。このサイトでいうと・・・

「ウィジェット」は4個

  • カテゴリアーカイブ
  • 月別アーカイブ
  • 最近のブログ記事
  • タグクラウド

「エントリー」

こんなもんかなぁ・・・。うまくいきますように。happy02

 

ウィジェットのモジュール化

前にも書いたように、うちのサイトの場合、ウィジェットマネージャーたるものが使えなくてサイドバーに直接記述してあるんですわ。

では早速・・・「カテゴリアーカイブ」を例に。

1)デザイン>ウィジェットをクリック。ウィジェットテンプレートの「カテゴリアーカイブ」をクリック。記述されているソースをコピーして、メモ帳に貼り付け。

2)デザイン>テンプレートをクリック。テンプレートモジュールの「サイドバー」をクリック。下記のように書き換えて、変更を保存。

<$mt:Include widget="カテゴリアーカイブ"$>
↓
<?php readfile("<$mt:BlogSitePath$>w-categories.html"); ?>

この場合はw-categories.htmlという名のファイルを読み込むように記述。

3)デザイン>テンプレートをクリック。インデックステンプレートの下にある「インデックステンプレートの作成」をクリック。下記のように記述して保存。

テンプレートの名前:w-カテゴリアーカイブ

内容:メモ帳に貼り付けたソースをコピー

出力ファイル名:w-categories.html

出力ファイル名は、2)で設定した青字のファイル名と同一にすること。

4)再構築して確認する。

5)同じようにして、残り3つもPHPモジュール化。以下のような名前付けました。

月別アーカイブ:w-monthly.html

最近のブログ記事:w-recent_entries.html

タグクラウド:w-tagcloud.html

 

エントリーのモジュール化

1)デザイン>テンプレートをクリック。アーカイブテンプレートにある、アーカイブテンプレートの作成で「ブログ記事」をクリック。下記のように記述して保存。

テンプレートの名前:エントリー・本文

内容:<$MTEntryBody$>

2)同ページで、下部にある「テンプレートの設定」をクリック。ビローンと下にのびたら、アーカイブマッピングの下の「新しいアーカイブマッピングを作成」をクリック。

3)種類:ブログ記事となっている右の「追加」をクリック。パスはカスタマイズを選択し、下記のように変更して保存。

→ %y/%m/entry%E-body%x

4)全体を再構築。

5)デザイン>テンプレートをクリック。アーカイブテンプレートに、「エントリー・本文」が追加されているか確認。

6)インデックステンプレートの「メインページ」をクリック。下記を変更して保存(1行で記述)。全体を再構築して確認。

<$mt:EntryBody$>
↓
<?php include('<$MTBlogArchiveURL$><$MTEntryDate format
="%Y/%m"$>/entry<$MTEntryID$>-body.php');?>

7)うまく表示されたことを確認したら、アーカイブテンプレートの上記の部分も同じように書き換える。

このサイトの場合は3つを書き換えた。

  • カテゴリ別ブログ記事リスト
  • ブログ記事
  • 月別ブログ記事リスト

同じように、エントリー・追記もしてください。ワシは、レッスンブックでソースを書き換えてしまっているので、追記自体ができない仕様になってました。まぁ追記を使う機会がないと言えばないから、ええかなと。smile

 

最後に・・・確かに記事数がまだ少ないのでなんとも言えんが、再構築のスピードは短縮できた気がする。

ああそれと、新規で記事を書いた時の「プレビュー」確認ができません。記事が表示されなくなってしまっています。ちょっと不便なので、直したいんやけど・・・。sweat01

MovableType5のPHP化[MT5]

案外、1回始めたら長期まで続けるくせがあって、たぶんこのブログも不定期であれ、長期に渡って続く可能性がある。まぁそうゆうことで、PHP化と、あとに続くPHPモジュール化を今の内にやっておこうってことです。

下記サイトを参考にさせていただきました。説明はバージョン4ですが、5でも同じです。

[参考サイト]

 小粋空間>>Movable Type 4 の PHP化

 

そもそもPHP化PHPモジュール化ってなんですんの?ってことですが・・・再構築の時の時間短縮が目的ですな。pig

しくみは、検索してみて他のサイトの記事を読めばよくわかりますよ。

ここでは、もっと簡単に、おでんを例にあげて説明しますと・・・、

  1. 6つの窪みがある皿があるとします。注文がくるとその皿におでんをよそわないといけません。1つの窪みに1種類の味が染みた具を入れていきます。
  2. 今、ずんどう鍋に6種類の具が混ざって煮込んであります(この状態がデフォルトの状態です)。注文が来たときには、1種類づつ具を探して取り出して確認し、味が染みている具を皿に乗せていきます。取り出すごとに、具の種類と味の染み具合を確認しなければなりません。
  3. 時間がかかるので、ずんどう鍋をやめて、四角い薄い鍋に仕切りしたもの(コンビニとかで見かけるあの鍋)を使用することにしました。その仕切りの数は12個あります。内6つの仕切りに具を種類ごとに分けて入れました。
  4. 注文が来ると、皿によそう前に、まず各具を確認し味が染みているものだけを取り出し、残った6つの仕切りに移し替えます。それから、皿によそっていきました。

とまぁ、こんな感じで整理して先に1度作業しといて後の作業を効率よく簡単に済ませよう!ってのがPHP化やPHPモジュール化の醍醐味です。え?食物を例にしたんですが、わかりにくかったですか?bearing

 

インデックステンプレートのPHP化

1)デザイン>テンプレートを開いて、インデックステンプレートの中のメインページをクリック。下部にあるテンプレートの設定をクリック。出力ファイル名を変更。

index.html → index.php

2)アーカイブインデックスも同じ様に変更。

 

アーカイブテンプレートのPHP化

1)アーカイブテンプレートの中のブログ記事をクリックし、下部にあるテンプレート設定をクリック。パスの部分で、カスタムを選択し、アーカイブパスを変更。

→ %y/%m/%d-%h%n%s%x

2)設定>全般を開いて、アーカイブ設定の中のファイルの拡張子をphpに。

 

再構築をして確認

1)ブログのトップページを開いて、そのURLにindex.phpを付加して確認。このブログの場合・・・

http://rappan.sakura.ne.jp/blog/ → http://rappan.sakura.ne.jp/blog/index.php

2)うまく表示できていたら、*.htmlファイルを全て手動で削除。

 

XML宣言の修正パーミッション変更は不要でした(ステップサーバーを使用してます)。