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の連携