CMSとして使うために

2007/03/11 | MovableType

新しいカテゴリまで作ってしまった・・・MT。
でもって、CMSとして使うためのメモ。

現在のMTでは特定カテゴリ下にあるサブカテゴリを一覧取得することが出来ない(できるかもしれないけど、やり方がわからない)。でもトップレベルカテゴリの一覧表示であればできる。
これが実現できると、メニュー用のカテゴリを作成して、その下に作ったサブカテゴリをメニューリストとして使うことが出来ると思ったのだが・・・。

で、これを代替手段で実現する方法(思いつきだけで、実践はまだ)。
「ブログを二つ用意して、メニューは片方のブログ(メイン)のトップレベルカテゴリを使用してデザイン等をすべて作成し、もう片方のブログ(サブ)はメインのテンプレートを参照して使う」

出来るかどうかわからないけれど、ぜひ試したい。ただしデフォルトではテンプレートを共有することは出来ないので、別途プラグインを組み込む必要がある。

テンプレート共有プラグインmultiblog

これができたら、いよいよウェブはMTだけで構築できるかも。もちろんXML-RPCモジュールも出来ているから、別途カスタマイズして、記事投稿フォームも作成できる。すばらしい。

デザインの枠(layout:レイアウト)を変更

2007/03/10 | cakePHP

デフォルトで使用されるデザインの枠組み(これをlayoutという)は$scaffoldを使用する場合はいいのかもしれないが、普通にウェブアプリを作っていくうえではNGだ。たいていの場合はちゃんとしたデザインをするはずなので、その枠を別途用意してやる必要がある。「cakephp layout」等で検索すると、いろいろなページが出てくるがやり方は一つ。

(インストールディレクトリ)/app/views/layouts/default.thtml

このファイル中では以下の2つの変数を設定しておく必要がある(正確には少なくとも本体用の変数を1つ:もう片方はタイトル用)。
<?php echo $title_for_layout;?>
<?php echo $content_for_layout;?>

いつも思うが、名前の付け方が無頓着。「$subject_for_layout」ってすれば文字数が同じになって美しいのに。まぁ、<title>タグにあわせているんだろう。

さて、ここまでの記述はどこのサイトでも書いてある。でも、これだと一つのサイトはすべて同じレイアウトでしか表現できなくなる。基本は同じにすべきだろうが、やはり複数のレイアウトが必要になる場合というのは少なからずある。この記述方法がほとんど書いていなかった。

どこかで見た記憶が・・・と思ったのでマニュアルを調べてみると書いてあった。
コントローラーの記述で、

var $layout=’default';

等として、拡張子を省略して指定すれば、各コントローラー毎に個別にレイアウトを指定できるようになる。
また一つ賢くなった♪。

やっぱりMTは最強かも

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

以前serendipityの記事を書いたときに「MTに一矢報いたい」などと書いた。これはどうやら相当難しい。
最近MovableType絡みの仕事を請けた(といってもカスタマイズするわけではなくXML-RPCインターフェースの開発)。で、これを機会に久々にMovableTypeを自分でもインストールして使ってみることにした。

まず結論だが他のブログツールでは、ちょっとかないそうにない。当然といえば当然なのだが、ブログツールのデファクトスタンダード。ずいぶん先行している。まずインターフェースが秀逸。一度使い始めると他のブログの管理ツールはどうしてもしょぼく見えてしまう。
でも一番すごいのは、デザインの自由度だろう。以前からわかっていたことだけど、もうMTはブログツールではない。完全なCMSなのだ。デファクトになったが故、利用者も広くドキュメントも豊富。テンプレートも優れたものが多い。当面MTの時代は続くだろう。

しかしCMSとしての利用ならserendipityでも出来そうな気がする。PHPの手軽さもあるからモジュールの開発も出来るはずだし、無理をしてソースを読めば如何様にもカスタマイズできる(はず)。

MTのすごさにも触れたけど、なんとなくserendipityもがんばろうかな、と思った一日でした(両方使ってサイトを立ち上げてみようと思う)。

xmlrpc.incで日本語が通らない

2007/03/08 | XML
受注した開発でXMLを使用するのに、xmlrpc.incを使用している。ダウンロードは以下のサイト。
http://phpxmlrpc.sourceforge.net

今まではPEAR大好きで、基本はPEARのライブラリをあさっていたのだが、PHP5に完全対応ではないことがわかってからどうも使うのをためらってしまう(PHP4の時は使うけど)。
さて今まで開発を進めていて、何の問題もなく(いや、どうにかこうにか)動作して、ほぼうまくいくことを確認していたのだが、何の気なしに「試験」という言葉を入力したらつまづいた。「あれぇー」と思いつつ「test」と入力するとうまくいく。どうやら日本語の問題らしい。
開発に際して、ちょっと前に買った「PHP5 & XMLによるWebサービス構築」という本を見ていたら、スクリプト中になにやら1行おまじないが書いてある(この本買ったときは「イマイチ」と思ったけど、今XML-RPCやるにはわりと使えます)。

$xmlrpc_internalencoding=’UTF-8′;

「あらら、まぁ、当たり前だよね、日本語使うんだし」とそのおまじないをスクリプト中に書いてみたけど、しかしやっぱり日本語が通らない。仕方ないので最後の手段・・・ソースを読んでみた。
そうすると上記の記述方法が変わってしまっている!。こんなふうに。

$GLOBALS[‘xmlrpc_internalencoding’]

これでは動かないはずです。よってプログラムを以下のように書き換えました。

require(“./xmlrpc/xmlrpc.inc”);
$GLOBALS[‘xmlrpc_internalencoding’]=’UTF-8′;

おまじないの記述はファイル読み込み後にするのがミソ。こうしないとファイルに書かれてある記述を上書きしてくれません。

XML-RPCネタその2(ブログを操作)

2007/03/07 | XML

XML-RPCネタの2つ目。ブログを操作できる。
日記ツールとしてだけでなくCMSツールとしても活用されるブログだが、普通は専用の管理画面にログインしてそこから各種操作をするのが一般的だ。とある案件で「最近のブログツールはXML-RPCインターフェースを持っていて、別途対応のプログラムを用意することによって外部プログラムと連携できる」ということを知った。具体的には別途自前で用意したプログラムからXML-RPCメッセージを送信することによってブログに記事を書いたり、すでに書いてある記事を上書きしたり、といったことが可能だ。
いくつか規格が用意されていて、blogger、metaweblog、mtなどの規格がある。blogger企画をベースにして、その拡張がmetaweblog、ムーバブル対応拡張がmtといったところだろうか。

PHPでは、ping、RSS、XML-RPMの各機能を実現するための各種ライブラリがいくつか用意されている。PHP標準のライブラリであるPEARだけでも実現できるし、sourceforgeなどで開発されているxmlrpc.incやsimplepie.incなどを使っても簡単に実装できる。
しかし参考になるサイトが少ないのが現状だ。その理由は「XML-RPCの規格そのものが単純だから」ということらしいが、普通のウェブの世界でプログラムを作っていた人間からすれば、別世界に飛び込むようなもの。最初は何をどうしてよいのかわからないだろう。
先の投稿でも書いたけど、なるべくサンプルプログラムを掲載して、メモしていこうと思う。


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