アプリケーションを作る
MovableTypeがともだちになったの巻
MovableTypeにふりまわされるの巻から一夜、頭を冷やしたら出来た。なにを複雑なことを考えていたのか、と反省
table of contents
MTをKohanaのindex.phpと同じところにインストールする
Kohana側のindex.phpと同じところにMTを入れる。もちろんapache のaliasを使ったり、MT側のディレクトリ設定をいじれば別のところに入れることは出来るが、HTTPの大元の設定やMTは素のままで使いたいので、あえて同一ディレクトリに入れる。
ディレクトリの構造
HTTPのDocumentROOT /index.php<=kohanaのindex.php 同上 /mt-cgi-path <=MTのCGIパス 同上 /mt-static <=MTの共通静的ファイル 同上 /ブログディレクトリ(静的ファイル)/
もちろん、'Kohana'というフレームワークにあるように、.htaccessの設定が<ファイルが存在すればindex.phpに情報を渡さず直接ファイルアクセスする>という風になっているので、このままだと/ブログディレクトリ(静的ファイル)/にあるファイルがそのまま送信されてしまう。
そこで、ブログディレクトリにかんしては、直接アクセスを禁止してKohana経由で処理できるように、次のように.htaccessとシンボリックリンクをいじる。
.htaccess修正。MTの静的ディレクトリへの直接アクセスを禁止する
.htaccessのRewriteCondを、下のように設定し直す[1]。
標準添付の.htaccessの修正
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
#下の二行を付加する
RewriteCond %{REQUEST_FILENAME} ブログのフルパス
RewriteRule .* index.php/$0 [PT,L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
シンボリックリンク:MTの静的ファイルパスをkohana文書パスにリンク
---
cd Kohanaの文書ディレクトリルート ln -s MTの静的ファイルパス .
これでKohanaモジュールは、シンボリックリンクにあるMTのブログファイルを文書として読み込む。
routes.phpでMT静的パス用のルーティングを加える
簡易タグのパースだけ出来ればいいので、Controller内でパース直後にprintする。Viewは単にechoしているだけ。
routes.phpの設定と、コントローラーのメソッド
---rotes.php
$config['MTのブログディレクトリ'] = 'page/rawhtml';
$config['MTのブログディレクトリ/(.*)'] = 'page/rawhtml';
---Controllerのrawhtmlメソッド
public function rawhtml()
{
$content = $this->model->get_content();<=MTのファイルを取ってきて
$parser = new TagParser($this->model);<=独自タグをパースして
$parser->set_content($content);
$result = $parser->parse();
$template = new View(site::$info['skin'].'rawhtml');<=Viewに渡す
$template->content = $result;
$template->render(TRUE);
exit;
}
これで、BLOGサイトのような処理が可能となった。