デザインの枠(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の規格そのものが単純だから」ということらしいが、普通のウェブの世界でプログラムを作っていた人間からすれば、別世界に飛び込むようなもの。最初は何をどうしてよいのかわからないだろう。
先の投稿でも書いたけど、なるべくサンプルプログラムを掲載して、メモしていこうと思う。

XML-RPCネタその1(pingとRSS)

2007/03/06 | XML

最近XML-RPCを使う機会が増えてきた(単にそういう依頼がたまたまかさなったというだけかもしれないけれど)。いろいろ調べると、やっぱり世間でもそういう話題が多いみたいだ。うちが携わっている案件はこんな感じ。

■更新pingの受信とRSSの取得
ある顧客のサイトでCMS導入を希望されていらっしゃるところがあった。元受会社には「MTでしょ」といったのだが、どうも乗り気でない(理由は結局よくわからない)。あと予算も少ないような感じだったので、いっそのこと外部のブログを使えばいかが、という提案をしたらこちらは通った。
有料ブログのサービスは独自ドメインを使えるところもあるので、これをサブドメインで利用する。メインのドメインにはスクリプトを配置して、そのブログから更新pingを送信するよう設定し、pingを受信したら折り返しそのブログのRSSを取得する。取得したRSSから必要なデータ(記事のタイトルや記事への直リンク、投稿日時等)を蓄積し、メインのウェブサイトでその情報だけを表示する、というもの。
あとはブログのデザインさえ、メインのデザインとそろえておけば立派なCMSが出来上がり。

これはかなりいけてる提案だと思った。
プログラムとしては基本的にping受信とRSS取得の2つだけでよくて、あとは表示用のプログラムを少し。ソースコードは今のところまだ美しくないので、きれいに整形したら公開します。


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