WordPressのEvent Calendarプラグインを別ブログで最近使い始めました。
基本的に自分が参加したいイベントや知人が主催する勉強会などのイベント情報をどんどん投稿していっています。将来的にはこのプラグインを使って、自分が運営するとあるサイトもリニューアルしたいと考えています。
このプラグインの特徴として、イベント情報がiCal形式で出力されています。これはGoogleカレンダーとかOutlook2007などで取り込んで、自分のスケジュール調整に大きな力を発揮しそうと感じました。
そこでこのプラグインを活用してみようと思ったのですが、ひとつ問題が。
それはGoogleカレンダーで見た時に(=iCal形式のデータ上)、そのイベントに関する説明文が記載されてないことです(投稿者名だけがひっそり表示されている)。通常はブログのエントリー内容が反映されるのを期待するのですが、ソースを見るとブログの抜粋欄に入れた物が反映されるようです。
そこで、プラグインに手を入れて改良してみようと思い立ったのでした。
iCal形式って何?
携帯電話の予定表やOutlookの予定表を同期したいという欲望はかなり以前からあって、未だに実現しておらず、あっさりiPhoneで解決してしまいました。
その中で携帯電話も含めiCalとかvCalendar形式など様々なファイル形式があることを知りました。
今回iCal形式で出力されており、またGoogleカレンダーもOutlook2007もiCal形式を読みこむことができるので、iCal形式にフォーカスして調べてみました。
RDFカレンダー — iCalendarとRSSによるイベント情報の公開と活用
おそらく、この2ページを見ているとだいたい仕様が把握できそうなのですが、一番期待していることはイベントの説明文です。説明文は文章も長く、また改行なども必要なのですが、それにあたってはこんなルールがありました。
各行は CR + LF (16進:0D0A) で改行され、各行75オクテットの文字数制限がある。次の行にまたぐ場合はスペース (16進:20) またはタブ (16進:09)で行を始めることで、前行からの続きであることを明示できる。データ項目内での改行をしたい場合は「バックスラッシュ + N」(UTF-8で5C6Eまたは5C4E。日本語環境では「¥n」)でコーディングする。
RDFカレンダー — iCalendarとRSSによるイベント情報の公開と活用より引用:
行の長さと折り返し
プロパティ:値のペアを1行に記述します。長い行(目安として75バイト以上)は改行して、次の行の先頭にスペースもしくはTABを1文字入れることで、行を連続させられます。
つまり説明文の中では
- データ項目内での改行をしたい場合は「バックスラッシュ + N」
- 次の行にまたぐ場合はスペース (16進:20) またはタブ (16進:09)で行を始めること
の2点に気をつけなければいけない、ということを意識してコーディングしました。
iCal出力を行っているPHPファイルは1ファイルずつ開いて必死に探し出して「eventcalendar3.php」であると特定しました(注・プラグインカスタマイズ未経験者)。
これで、大体問題無くプラグイン改修できたのですが、説明文を72バイトごとに改行処理する関数(はてなで聞いて拾ってきた)に問題があるのか、エントリーによってはうまくいかない事例がありました。これはPHPの日本語処理の理解の甘さが自分にあるのかな、ってことで課題にしています。
今後の展望
とりあえず、日本語改行処理の部分に問題は残っているのですが、これでGoogleカレンダーにもOutlook2007にもなんとか反映されて使えるようになりました。まだ実質バグありなので公開できませんが、うまくできれば公開したいです。
追加した機能は
- イベントの説明文をブログのエントリー本文から抽出して表示することにした
- その本文から頭400文字のみ表示するようにした(詳細はブログで、みたいな誘導効果も狙い)
- 説明文の最後の行に、そのイベント情報に関する掲載ページのURLを記述
の3点でしょうか。
今後追加したい機能は
- イベント開催場所の追加(iCal形式の出力とカスタムフィールドの追加)
- iCalで出力するときは過去のイベントを出力せず未来の情報だけにする
(たぶん、頑張ればSQL文で未来のイベントだけ抽出するってことができそうな予感)
- ブログエントリー画面でなく、ブログ表示画面でログインユーザーがTwitterのように、気軽にイベント情報を投稿してもらえるようなインタフェース作成
というあたりでしょうか。
これによって、サークルとか勉強会、会社などでのイベント情報発信ブログ(iCAL形式ファイル配信機能付)みたいなのが実現できそうです。
イベント(カレンダー)情報の流通ってのも、今後WordPressベースで実現できると、素敵だなぁって個人的には思っています(いや、自分がそうするんです!)。
なお、プラグインを作ったことが無いので、予想&当てずっぽうでカスタマイズしています。
なので、どこかでちゃんと勉強したいと思います(来月川崎の勉強会もありますし)。
コメント