ここ数日、メインページの左下にドイツのニュースサイトが提供しているRSSをひっぱってこようとして、なにせ MovableType 初心者だから、試行錯誤していた。
MovableType は UTF-8 だから、基本的にドイツ語やフランス語の特殊文字と日本語が共存できることは、すでにいくつものエントリで実証済みだった。SJIS や EUC で ä, ü, ö, ß を ae とか ue とか ss とか記すのは気が進まないし、フランス語のアクサンなんかどうにもならない。いや、確かにこのあたりのISO 8859-1に含まれる特殊文字は、HTML entities と呼ばれる表記法で書き換えることを厭わなければ、SJIS ベースでも共存させることは不可能ではない。しかし中国語や韓国語ともなると、日本語と共存させることもできない。ユニコードは違う。いろいろ言われているユニコードだけれど、このさい徹底して使って多言語共存を進めてやろう、と思っていた。
ところが、RSSフィードを引っ張ってくるとなるとすんなりとは行かなかった。あちこちの MovableTye サイトで使われているmt-rssfeed プラグインで持ってくると、どうもうまくいかない。ドイツのサイトはRSSにもたいてい ISO-8859-1 を使っているので、それを UTF-8 に変換してやりさえすればいいはずなのだが、どうしてもウムラウトなどが化けてしまう。
PHP のほうで、MagpieRSS というモジュールがあることに気づいたので、ためしにそれを使って、RSSを取ってきて、これに PHP の mb_convert_variables をかけてやると、UTF-8 できれいに表示できる。ならばそれを MT のメインページに埋め込んでやればいいではないか。そう思ったけれど、メインページの拡張子は .html だから、そこに .php ファイルを include してやってもうまく動かない様子。はて、では PHP のほうから .html ファイルを書き出させて、それをMTIncludeすればいいのかなどと考えて悩んでしまった。
そこで思いついたのが、MT と PHP の初心者にしてはたいへんな「逆転の発想」。MT のメインページの拡張子を .php にしてしまえばいいではないか。メインページを含めて、MT のテンプレートには、書き出しファイル名を指定する欄がある。ということはなにも index.html でなくてもいいのではないか。index.php でもいいのではないか。そうしておいて、MagpieRSSで RSS を引っ張ってくる .php ファイルを PHP でインクルードしてやる。やってみたらうまくいった。MT がそれだけ柔軟で頑丈に設計されているということだろう。もしかしたらどこかに不具合が潜んでいるかもしれないけれど、今のところはうまく動いているようなので、しばらくこれで行ってみようと思う。
というわけで、ここのメインページの左には、Lycos.deからとってきたニュースの見出しが文字化けもせずに並んでいるはずですが、いかがでしょうか。
追記。
PHPで書かれたページに .php ファイルを埋め込むには、PHP の include 命令を使うのが正解だが、.html ページに .php ファイルを埋め込むには IFRAME タグを使えばいいことに、最近ようやく気づいた。でも面倒なのでしばらくこのままにしておこう。



コメントする