やりたいことは、ユーザ情報のページで、blogのURLとその人の紹介文を入れたいというものです。ユーザ情報の管理画面をじっと睨みつけると、ありました。使えそうなフィールドが。
「その他」という自由記述の欄に付加情報を格納しておくことにしましょう。
さて、これをどうやって構造化するかが課題です。
今回注目したのが、YAML。
(「やむる」と呼べばいいのか... サイトには camel と韻を踏んでいると書いてあるけど。)
これは YAML Ain't Markup Language の略で、いわゆるマークアップ言語ではないと宣言しています。
XMLなどの立派なマークアップでは処理も記述も大変だという問題意識から、構造化データをいかにコンパクトに柔軟に、かつ人間にも読みやすい、書やすい記述ができるかを目指して仕様化が進んでいるフォーマットです。
YAMLは、
・値の名前と値を : (コロン)で区切って関連付ける
・一行が一対の値定義
・階層関係は空白文字によるインデントで行う
というのが基本コンセプトです。
改行が含まれる値の扱いなども、特別な書き方が用意されています。
イメージとしては次のとおりです。
contact:
zipcode: 186-1234
addr: 東京都江東区
tel: 03-1234-5678
- mail: primary@example.com
- mail: secondary@example.com
blog: http://www.tyzoh.jp/
ハイフンで始まっているのはシーケンスをあらわします。
これを YAML パーサーにかけると、多くの処理系では連想配列として取得できます。
たとえば、PHPのYAMLパーサーである Spyc を使うと以下のように
連想配列が返されます。
require('spyc.php');
$yaml = <<
contact:
zipcode: 186-1234
addr: 東京都江東区
tel: 03-1234-5678
- mail: primary@example.com
- mail: secondary@example.com
blog: http://www.tyzoh.jp/
EOD;
$array = Spyc::YAMLLoad($yaml);
XOOPSのレンダリングエンジンはSmartyなので、
連想配列になってしまえば画面表示はお手の物。
$xoopsTpl->assign('user_attr', $array);
とすれば、テンプレート内では {$user_attr.contact.zipcode} などと参照することができます。
これであとは、データの投入だけだと思っていた矢先、
データベースのカラムが tinytext ということが発覚。255バイト。
仕組みはできても絶対容量が足りまへん...
討ち取られました。今日はおしまいです。
カテゴリ:サーバ管理
タグ:Xoops
<< Cooperative Linux 0.6.3 に Ubuntu-ja で独立ブラウザ環境。 | Main | YAMLでXOOPSユーザ情報を拡張したい。その後。 >>
ワタナベ (2006-02-28 23:17) | コメント(0)| トラックバック(0)
トラックバックURL:
プロフィール
ワタナベ
サーバ管理が趣味の渡邉充隆です。
仮想化やネットワーク構成に興味があります。
あとは、ウェブ系の技術(プログラミングからインフラまで)も好きで、特にデータの見せ方などを工夫することで情報の流通や再活用を促進する技術を研究しています。
dev.tyzoh.jp では ssdb の(コアではなく)周辺のコードをいじっています。
月別アーカイブ
Copyright (C) 2004-2008 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source