「関連オブジェクト」からPodcastingに至る道
煮詰まったので現実逃避
COREBlog2では,エントリにいろいろなオブジェクトを「紐づける」ことができます。編集画面に「オブジェクトの関連づけ」という項目があって,ここにPlone上のオブジェクトを登録できます。Archetypesの「リファレンス」を利用した機能です(ちなみに,最新版では「最近追加されたオブジェクト」というテーブルが追加されてます)。
ここにオブジェクトを追加すると
- 画像などはエントリ中に表示する
- 表示位置はコントロールできる
- オブジェクトのタイトルはキャプションになる
- その他のオブジェクト(PDFなど)はエントリの下部に表示される(添付ファイルですね)
kupuのようなWYSIWYGなコンテンツエディタを使っても,エントリに画像やファイルを貼り付けるといったことは可能ですが,「紐付け」を管理する方がスマートですし,利点も多いはずです。
WYSIWYGなコンテンツエディタで画像を埋め込む場合,キャプションに使うタイトルなどはHTMLの中に埋め込まれます。画像側のタイトルを変更した場合は,HTMLの方も二重に編集しないとなりません。
一方,エントリとオブジェクトの紐付けだけ管理して,画像などを自動的に表示するようにすれば,オブジェクトの「メタデータ(タイトルとか解説など)」は画像の方に保存され,テンプレートが自動的に参照して表示してくれます。情報の管理が一元化するわけです。また,画像を削除すると自動的に「紐付け」が切れますので,画像のリンク切れもありません。うーん,ハイレベルなCMSだ。あとZODBってすばらしい。
エントリがオブジェクトとの紐付けを「知って」いるわけですから,紐づけられたオブジェクトのURLをRSSのenclosureに書き出すのは至って自然な流れです。エントリにmp3ファイルを紐づければPodcastが可能です。mpeg4ムービーを紐づければVodcast(Videocast)になる。enclosureに記載するのは,PDFでもいいしswfでもいい。将来的にenclosureはもっと多くのメディアタイプで利用されることになると思いますが,こういう抽象的な実装にしておけば,後々「何とかcast」が登場したときに(多分)追加実装の必要なく対応できます。
さて,エントリに紐づけたくなるのは,メディアオブジェクトだけではありません。リンクとかPloneの「イベント」とか,はたまたアンケート用の「Pollオブジェクト」かもしれないし,Google mapsの地図かも知れない。いろんなオブジェクトを紐づけて,さらにエントリの中にスマートに表示された方が楽しいはず。
そこで,ひとつInterfaceを定義して,これをimprementしたオブジェクトについて,テンプレート上で特別な振る舞いを持たせるようなことを考えています。エントリと紐づけるオブジェクト側には,COREBlog2上に表示する際の「見栄え」を定義したmetalがあって,Interfaceのmethodを呼ぶとmetalのパスが帰ってくる,という感じかな。こうすれば,オブジェクトは固有の「見栄え」と同時に,COREBlog2エントリ向けの,というか,他の「ドキュメント質」なオブジェクト内で表示されるための「見栄え」を持つことが出来る。
てなわけで,冬の合宿では,ATCTベースのコンテンツタイプを作る開発スプリントでもしようかな,と思っています。
- Category(s)
- zope
- COREBlog2
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/road-to-podcastiing/tbping

