WordPressからProgressionのPRMLを出力してみる
Flashネタをエントリーするのは久々だなー。先日の福岡てら子で発表した内容ですが、WordPressからProgressionで使うPRMLというXMLを出力する方法。PRMLの詳しい説明は本家リファレンスを参照して下さい。これを使うことにより、WordPressからProgressionにダイレクトにシーンを生成出来るようになる。今回はWordPressのカテゴリーをシーンに見立てて出力しているので、親、子、孫、曾孫といった深い階層のシーン構造も簡単に作ることができる。下記のPHPをWPがインストールされているサーバーのテーマフォルダにアップします。次にWPのメニューからページを新規で追加して、タイトルに「prml」と入力し、右サイドバーの属性のテンプレートから「prml」を選択。この状態でページを公開すると、タイトルの下にパーマリンクが表示されるので、このURLにアクセスすると現在のカテゴリー構造を維持したままのPRMLが出力されるようになる。こんな感じ。
prml.php
<?php /*
Template Name: prml
*/ ?>
<?php
header('Content-Type: text/xml; charset='.get_option('blog_charset'), true);
//-----[PRMLのヘッダー生成]
$title = get_option('blogname');
$header .= '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
$header .= '<prml version="2.0.0" type="text/prml">';
$header .= '<scene name="index" cls="myproject.IndexScene" title="'.$title.'">';
//-----[WPから全階層のカテゴリー取得]
$str = wp_list_categories('orderby=id&echo=0&hide_empty=0&use_desc_for_title=0&title_li=');
$str = strip_tags($str, '<li>');
//-----[PRML形式に変換]
$category = strip_tags($str, '');
$category = str_replace(array("\r\n","\r","\n"), '', $category);
$category = preg_replace('/\s+/', ' ', $category);
$category = ltrim($category);
$category = split(' ', $category);
for($i=0; $i<count($category); $i++)
{
$str = str_replace(">".$category[$i]."\n", $i.">", $str);
}
$str = preg_replace('/"(.*?)"/', '', $str);
$str = str_replace('li', 'scene', $str);
for($i=0; $i<count($category); $i++)
{
$str = str_replace('class='.$i, 'name="'.$category[$i].'" cls="myproject.'.ucfirst($category[$i]).'Scene" title="'.$title." | ".$category[$i].'"', $str);
}
//-----[PRMLとして出力]
echo $header.$str.'</scene></prml>';
?>
このPHPでやっていることはwp_list_categories()で取得したリストタグ付きカテゴリーを力技でPRML形式のXMLに変換してるだけ。ソースを見てもらえば苦笑いできると思います。w
ここではシーン構造のみをPRMLとして出力してるけど、Progressionの各ページ内にWPから画像を読み込んだり、テキストを流し込む場合は個別にXMLを作ったほうが管理しやすいと思う。その場合は以前エントリーしたこの記事が役立つと思います。
今回参考にさせて頂いたのはMotuLogさんのエントリー。ありがとうございます!またflabakaさんは自分とは違ったアプローチでWordPressやMovableTypeとProgressionを連携させる方法をエントリーされてます。
■参考サイト
・MotuLogさん Progression(3.1.52) 動的にシーンを作成する
・flabakaさん ProgressionとWordPressの連携
福岡てら子 2 「オレ流テクニックの種明かし」に行ってきた

第2回目が無事終了しましたー。参加頂いた皆様、ありがとうございました!今回は発表者が多かったので時間も延長してしまいました。懇親会の開始が遅れたりと主催側での反省点もありましたので、次回につなげたいと思います。
自分の発表内容はWordPressとProgressionの連携についてでした。詳しくはまたエントリーにまとめようと思いますが、内容としてはWPからPRMLを出力させてProgressionに動的にページを追加する、というものです。皆様の発表はこんな感じ。
■Garyutenさん
・ブログパーツの失敗例について
・wmodeをtranceparetにしていると日本語入力ができなくなる
・ブログパーツを貼ってくれた人のサイトのアクセス解析ができるなど、仕組み次第で悪用できる
■urarakaさん
・CASA Libについて
・CASAを使った複数画像の読み込み方法
・その他の有名な複数画像の読み込みライブラリ(bulkLoader、queueLoader)
・removeEventListener系の使い方(イベントのリスナーや関数名を指定して削除できる)
・destroyメソッド(すべての参照を消してくれたり、親からの参照も消してくれる)
・xmlの読み込みもシンプルに記述できる
■sama_nightさん
・マルチタレント、司会、オークション代行もやってます
・PIPの作り方について
・グリーンバックは肌色の補色になるので(海外では違う色をバックに使うらしい)
・プロンプター(目線をカメラに合わせるための機材)
・keylightを使った背景抜きのデモ
・PIPをFlashで制作するデモ
■shikajiroさん
・ユニットテストしてますか?
・FlexUnit4β、FlexMonkeyがおすすめ
・実際のコードでユニットテストのデモ
■taikikenさん
・De MonsterDebuggerの実演
・swf動作中にメソッドを呼べる、プロパティを弄れる
・Objectの中身が丸見えになる
■usam1111さん
・Webカメラからの映像をビットマップ操作でアスキーアートに変換するデモ
・ポイントの明るさ取得のコード
・今後の演算スピードアップについて
写真はusam1111さんの発表中に一番笑いが起こった瞬間です。いつも面白いネタありがとうございます!w
3回目は「音に反応するなにか」にしようと思ってます。開催時期はまだ未定ですが、準備が出来次第告知して行こうと思います。これからもよろしくお願いいたします!
■参加者の各エントリーはこちら
・福岡てら子2「オレ流テクニックの種明かし」に行ってきました
・福岡てら子第二回に参加してきたよ。
・福岡てら子 vol.2に参加してきました。
・福岡てら子2に行きました
・“福岡teraco vol.2″に参加しました
・福岡てら子に行ってきた。
・CASA etc. @福岡てら子
・福岡 てら子2
男子ランチでpissenlitに行ってきた



taromisakoさんとamadamanさんの3人で昼飯食べに行ってきた。今年の初めに開催した新年会で定食が好きだ、みたいな話になって意気投合した3人です。なかなか実行できなかったけど、ようやく集まれた。ピサンリはミサコさんが紹介してくれた、小さくて雰囲気のある隠れ家的なお店でした。
店内は4テーブルとカウンターのこじんまりした広さ。でも吹き抜けになっているので、ちょっとした開放感。料理は前菜+パン、3種類の中からメインを1つ選ぶ形式。自分は牛ホホ肉の赤ワイン煮込みに。ボリュームは男子にはちょっと控えめかな。お客さんもほぼ女性でした。知っている人しか行けないでしょうね。第1回目にふさわしい洒落たランチが楽しめました。最後にデザートとコーヒーも付けて、2時間くらい会話しながら美味しく頂きました。
食べ終わった後は天神まで一緒に移動して、それぞれ解散。自転車に乗ってさらーっと帰りました。なんか妙に楽しかったな。次はガッツリ系の定食屋に行こうと思います。またふらっと開催したいですね。
