単独のMovableTypeを複数PHP化してモジュール化

複数のサイトを1つの Movable Type で動かす
SPAMブラックリストの共有、cron処理の一括など、複数のタスクを立ち上げないことで少しでも負荷がかからないように、1つだけインストールしたMTを使って複数のドメインのブログを制御する。

 
バーチャルドメイン設定(WEBサーバ)
 /etc/httpd/conf.d/virtualhost.conf

<VirtualHost *:80>
ServerName ドメイン指定
DocumentRoot 格納ファイルの絶対パス
ErrorLog logs/エラーログのファイル名(分離する場合に適宜)
CustomLog ログ記述方法(上記ある場合)
</VirtualHost>

MTへのシンボリックリンク作成
# ln -s /var/htdocs/html/mtadmin /var/htdocs/bbb/mtadmin

[root@tengallon ~]# ls -l /var/htdocs/bbb/
lrwxrwxrwx 1 root root 23 11月 6日 01:01 mtadmin -> /var/htdocs/html/mtadmin

MTのPHP化
再構築の負荷軽減と高速化・アクセス解析入れ込み・メンテナンスのし易さの恩恵を得るためのPHP化。
基本的には出力ファイルの拡張子をphpにするだけ。
設定 → 公開 → 「アーカイブの拡張子」欄をhtmlからphpに変更
※テンプレートはxhtmlなので、php化すると動かない。
xhtmlは最初にxml宣言(<?xml …. ?> )を入れなくてはいけないがPHPの書き方と一緒のためエラーになる。
この1行目の宣言を削除!・・・・ではなく、echo文にして宣言を文字列として出力する。
といいつつ、ドットファイル(.htaccess)にPHPタグ短縮形の使用不可記述をすればテンプレートをいじる必要がなかったりする。(ヒャッホイ)

php_flag short_open_tag Off

xml宣言にはこだわりたいよね(意味深
 
CGIPath とテンプレートへの表示
MovableType はインストール時にプログラム本体へのURLパスを設定し、そのパスを「トラックバック先」などのURLに変換して表示する。
バーチャルドメインとシンボリックリンクで構成した場合、元々インストールしてあるドメインのパスがテンプレートに表示されてしまう。これだと、いざトラックバックしようとした利用者が「URLが違う!」と混乱してしまうため、この文字列をバーチャルドメインに変換する。
テンプレート → アーカイブ → エントリー・アーカイブ
(テンプレート内に記述)

<div id=”trackbacks-info”>
<MTIfPingsAccepted><p>このエントリーのトラックバックURL:<br />
<?php
$DefaultSetting = “メインのドメイン”;
$VirtualSetting = “バーチャルドメイン”;
$TBdisplay = str_replace($DefaultSetting, $VirtualSetting, “<$MTEntryTrackbackLink$>”);
print($TBdisplay);
?>
</p></MTIfPingsAccepted>
</div>

PHP化しといてよかった。ありがとうPHP様!
他にもうまい方法があったり、良い記述の仕方があるのかもしれないがこれぐらいしか思いつかなかった。
ToDo:
・カテゴリ内ページが長い場合に「次へ」を表示してページを分ける(PHP)
・テンプレートの同じ部分を全てモジュール化
・究極・記事のモジュール化(PHP)
・flashにrssを読み込んで記事へリンク(Flash、xml)
・アフィリエイトスクリプト整頓
・ユーザビリティ・テスト(ご協力お願いします)
・重複トラックバックを弾くプラグイン
ガンダム

コメント

タイトルとURLをコピーしました