b2evolutionでxmlrpc投稿

2007/09/23 | SNS/CMS/ブログ

すごく便利に使っているWordPressだけど、現在のバージョンではMySQL3.23系にはインストールできない(MySQL4以上に対応)。やむなく別のブログソフトを使うことにした。使用したのはb2evolution。こちらもメジャーなブログソフトの一つだ。
「使う」といってもブログを書きたいわけでもない。やっぱりまたxmlrpcだ。今回はブログソフトの機能だけを使用することにしている。具体的には・・・。

○投稿フォームは別途用意し、xmlrpcでブログへ投稿
○記事一覧は最新のものだけを使うと仮定して、RSSを取得・編集して使用
○記事詳細表示は、xmlrpcで取得して別画面で表示

つまりブログソフトのフロントエンド部分は基本的に使用しない。データの格納庫としてブログを使用し、xmlrpcを介在してアクセスする、という方法を採用した。意外といけてる方法だ(と思う)。

で、b2evolutionにxmlrpc接続しようと記事をpostしたが文字化けしてしまった。またしても???だ。ちなみに今回もsourceforgeのxmlrpc.incを使用している。以前xmlrpc.incのバグの記事を書いたけど、対応済みのクラスを使用しているにもかかわらず、だ。
やむなくソースを読んでみた。どうやらb2evolutionのxmlrpcのデフォルト文字セットがISO-8859-1としてセットされているようだ。それじゃぁダメだよね。本当は日本語対応状況とかいろいろ調べないといけないのだが、とにかく、こんなふうに文字コードがセットされていることが悪いことに間違いない。で、変更した。変更したファイルは「inc/_misc/ext/_xmlrpc.php」。このファイルの235行目あたり。

$xmlrpc_internalencoding=’ISO-8859-1′;

この記述をUTF-8に変更して再投稿し、無事日本語が通ることを確認した。

諸々調べたわけではなくて場当たり的なものなのだが、これでとりあえず対応できる。ソースコードを読むと、「ひょっとしたら、またxmlrpc.incのせいかも」と思える箇所が多いにあるのだが、とりあえず対応できることがわかったのでこれで問題解決とした。でもまぁ、まだどちらが悪いのか調べ切れていない。

WordPress MUの不具合その2

2007/09/09 | SNS/CMS/ブログ

WPMUのもう一つ致命的な問題。xmlrpc接続にはたくさん問題があるようだ。しかも現在対応中とのことだ。検索してみると、かなりコアな部分の修正もあるらしく、時間がかかる模様、とのことだった。

自分にとって一番致命的だったのは「記事投稿して、その記事にカテゴリ設定する」という仮定が、普通のブログシステムと同様にはいかないことだ。普通なら以下の手順で記事を投稿する。
(1) 記事本文等を投稿
(2) (1)の戻り値として記事番号を取得
(3) 記事番号とカテゴリを送信してカテゴリ設定

この手順はWordPress MUには使えない。なぜなら・・・ブログを作成するたびにテーブルを増やすような設計になっているので、記事番号が必然的に重複するからだ。「ブログIDでしていすればいいじゃん」ってことになるが、ノーマルなカテゴリ設定のメソッドmt_setpostcategoriesではブログIDは指定できない・・・。つまりは基本的な仕様外っぽい。

そこで仕方なくソースを読んでみた。どうもWordPressでも独自のxmlrpcメソッドを用意しているようだ。そしてmetaweblog_newPostも若干拡張されているようで、記事投稿時にカテゴリ設定もできるっぽい感じだ。

しかし今回はカテゴリ設定のメソッドを自分で実装した(今から思えばなぜこんな手間なことをしたのか・・・)。wp.setPostCategoryなるものを用意した。通常のmt.setPostCategoriesにプラスしてブログIDもあわせて送信するのだ。いずれにしても独自拡張だからいい方法とはいえない。WPMUに実装されているメソッドだけで対応可能と思われるので、時間を作って再度ソースの解読にチャレンジしたい。

WordPress MUの不具合

2007/09/08 | SNS/CMS/ブログ

実は知らずに採用したのだが、WordPress MUはまだまだ出来て間がないらしい。どおりで情報が少ないはずだ。
まず日本語環境での利用については、htmlentitiesに関する記述はなかった。どうやらこれは変更しなくても問題ないのかもしれない。ただしMySQLにたいして発行する「SET NAMES binary」の記述は必須だろう(MySQLのバージョンに依存する問題だと思われる)。
普通にダウンロードして使用すると(現時点での最新版は1.2.4)、全て英語での環境となるが、日本語版のパッチが出ているらしい。以下のページにその記述が。

http://wpmudev.org/project/WPMU-Japanese-language-pack-1.2.1%20

基本的に、コレを入れなくてもメニュー等が英語になだけで日本語を使用する分には問題なさそうだから、自分は入れなかった。

そして根本的な問題。
xmlrpcで接続して記事投稿する際に・・・デフォルトのブログにしか投稿できないのだ。つまりブログを3つも4つも作ったとしても・・・あとから追加したものにはxmlrpcで投稿できないのだ。具体的には、まだその仕組みが用意されていないのだ。プログラム中に「we will support this in the near future」と書いてあったりする!。これはちょっと困る。

仕方ないのでハック。xmlrpc.phpの当該部分にブログIDからブログを選択する一行を書き込んでみた。

switch_to_blog($blog_ID);

これだけ。他で不具合があるのかもしれないけれど、とりあえず記事投稿さえ出来ればいいから、組み込んでしまった。これで問題なくブログを選択して、記事投稿できるようになった。
まぁ、まだできて間がないプログラムらしいので、これからもいろいろでてくるだろう。

しかしこのWordPress MU(略してWPMUというらしい)、大規模向けとか書いてあったりする。そういう意味でテーブルをわけるような設計にしてあるのだろうか・・・。

WordPress MU(マルチドメイン)導入

2007/09/06 | SNS/CMS/ブログ

新規契約した3iX。いつものことだが、サポートチャットでいろいろ文句をつけて、ようやくなんとか正常動作にこぎつけた。うまく動いてしまえば、こっちのもん!。

動かないときに文句が言えない人はやめたほうがいいです。相手の気持ちも考えず文句を言ってしまえる人にはお奨めです。はっきり言ってサポートスタッフはお客をお客とも思ってないので、ガンガン文句言ったほうがいいです。文句を言う手間は省かなければ、この料金は激安です。

さて、一段落したところで、手持ちのライブラリをアップロードしたり、してると、急に・・・。
管理画面のcPanelがアップデート(?)してた(急に画面が変わったからびっくりした)。でもこれ、新しくなって使いやすい!。確認したところバージョンは「11.11.0-STABLE」となっていた。
以前はよくわからなかったのだが、新しくなってドメインを追加したりサブドメインを追加したりする際に、ターゲットとなるディレクトリを指定できるようになったらしい。これはチャンス!、と思って別で取得したドメインをアドオンとして登録した。このドメインをWordPress MU(マルチドメイン版)のテストとして使用するためだ。

まずはインストール。インストールに際して、ファイル群を眺めてみた。日本語対応をうたっているわけではないので、怪しそうなところがないかチェックするためだ。といっても1個だけ。htmlentitiesという関数が使われているかどうかチェックをしたのだ。ちなみにこの関数はすべてhtmlspecialcharsで置き換えた。実際は元の関数のままでも、別な箇所を変更することで対応できると思うけど、htmlentitiesは日本語環境では問題が出ることが多い。ということで事前に変換したのだ。

で、ファイルをアップロードし、インストール。とりあえず最低限、動くようになったらしい。まずは日本語のチェック、ということでデフォルトで投稿されている記事を日本語で書き換えてみた。・・・。だめじゃん。日本語が全部??????となってしまっている。でも、これはどこかで見た記憶がある。そう、昔MySQLのバージョン4.1を始めて使ったときの文字化けだ。ということで、データベースへの接続時にコマンドを一発飛ばすことにした。

SET NAMES binary

ファイル群を検索するとwp-includes/wp-db.phpでデータベース接続処理をやっていることがわかった。この中で、
$this->query(“SET NAMES ‘$this->charset'”);
な処理の記述があったので、この行をコメントアウトし、以下の行に書き換えた。
$this->query(“SET NAMES binary”);

はい。ファイルを置き換えてコレで終わり。
再度日本語で記事投稿してみて、うまく日本語が通ることが確認できた。
これからマルチドメインな使い方を試してみるつもり・・・。使い心地やカスタマイズは、都度このブログで紹介するかも・・・です。

WordPress

2007/09/04 | SNS/CMS/ブログ

最近おすすめのブログツールはWordPress。
ここしばらくはSerendipityに入れ込んでいたけれど、老舗ブログツールも使いやすい(すこしだけ癖があるけれど)。WordPressは古株だけあって、さすがに情報も豊富だし、テンプレート(テーマ)もたくさん配布されている。いつもテーマをあさっているサイトはここ。

http://themes.wordpress.net/

WordPressはいろんなバージョンがあって、今使っているのは「WordPressMe」と呼ばれる日本向け配布パッケージ。前述のように少し癖がある点はしょうがないとして、さすがにこなれている。使いやすい。最近はウェブベースで設定ファイルを作成するものが多いが、WordPressMeはあらかじめ設定ファイルを作成しておいてアップロードするタイプ。面倒といえば面倒かもしれないけれど、設置するディレクトリのパーミッションとか気にしなくていいので個人的には非常に気に入っている。

実は別のバージョンで注目しているものがある。それはマルチドメイン版のWordPressMUだ。こちらは複数ドメインを運用できるすぐれものだ。ただし、いくつか不満点がある。

○設定ファイルはウェブベースで作成するので、設置場所のパーミッション変更できる必要あり
○example.comというドメインを使用して運用する場合は、インストール時に必ずexample.comとしてインストールしないといけない
○データベースのテーブルがドメインごとに作成される(らしい)
○mod_rewriteが必要

最初の制約があるので、例えばロリポップで設置できない。これは二つ目にも関係がある。www.example.comという名前でインストールできない(wwwはいらない、とメッセージが出る)ので、サブフォルダを作ってどうこう・・・ということもできないのだ。
多分、別フォルダで適当にインストールするか、うまくやって、ルートディレクトリに設置しなおせば何とかなるような気もしている。

三つ目のような構成はあまり美しくない。だってサブドメインを増やせば増やすほどテーブルが増えるのだから。それぞれのブログが別々のテーブルになるので、RSS出力などデータの一元管理が必要な場合にはそれなりの工夫をしなくては成らない。

四つ目は、まぁ最近なら多くのレンタルサーバで利用できるだろう。でも、本当はmod_rewriteでやるのではなく、MTのようにHTML書き出しタイプがほしいなぁ、と思っていたりする。いろいろ調べたのだが、MTのようなHTML書き出しタイプのブログツールは、PHPでは見つけられなかった。どこかにあるのだろうか。もし「これこれ」なんていう情報があれば、コメントヨロシクです。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net