Movable TypeとWordPressにPukiWikiフォーマットを導入

kwWikiをMovable TypeやWordPressのウェブページに移行する計画のためにPukiWikiをプラグインにして導入しました。せっかくなのでPukiWiki形式でこのエントリ書いてみるMarkdownに書き直し。(ブログのエントリで下書きするのはなんか間違ってる気がするが・・・)
人様につかってもらえるほどのテストもしていないし、ドキュメント(使い方の説明)もまだ乏しいのでプレビュー版だと思っていただきたく。

とりあえず箇条書き

あとでドキュメント化しよう

  • もともとの動機は主にMovable Type/WordPressのウェブページをPukiWiki形式で書きたいところからきている
    • Movable Type版ではテキストフィルタを作成したのでブログエントリでも使えるが、WordPress版ではまだそれと同等なものは用意していない
    • WordPressのほうでは自作テーマをつかっているのでPukiWiki変換をするテンプレートページをつくってそれをウェブページの画面で選択している(個人的要求はこれで満たせている)
    • ちなみに自作テンプレート内で直接こんなことしてます
<?php echo wp_pukiwiki(get_the_content()); ?>
<span class="powered_by_pukiwiki">Powered by <a href="http://pukiwiki.sourceforge.jp/">PukiWiki</a></span>
  • Movable Typeではグローバルフィルタも作成、テンプレートでpukiwiki_convert_html=”1″を使うとPukiWikiで変換される
<mt:SetVarBlock name="pukiwiki_src">
*h1
**h2
***h3
-aaa
--bbb
---cccc
preprepre
</mt:SetVarBlock>
<div class="pukiwiki_content">
<mt:GetVar name="pukiwiki_src" pukiwiki_convert_html="1"/>
</div>
  • cssとして下記を追加する必要がある
    • Movable Type: /mt/mt-static/plugins/PukiWiki/pukiwiki.css
    • Word Press: /wp-content/plugins/pukiwiki-for-wordpress/pukiwiki.css
    • またdiv.pukiwiki_contentで括る必要がある

仕組み

  • プラグインの階層化にPukiWiki 1.4.7(utf8)そのものを同梱
  • プラグインから自分の階層にあるPukiWikiに対してHTTPをPOSTして変換したhtmlを受け取り出力する
    • Perl(Movable Type)から使いたいこと、phpからもグローバル変数・関数のバッティングなどを考慮してHTTPでアクセスすることにした(SOA的な)
  • 内部にあるPukiWikiのアクセス制限のため、別途リクエスト受け取り用のスクリプト(Adapter)を作成
    • このスクリプトは変換機能だけをもつ(書き込みはしない)
    • プラグインから以外のアクセスはエラー
    • interwikinameはOFF
  • 変換処理について
    • contentとfooter_noteを出力する
    • 実ページがあるわけではないので添付ファイルは使えない
    • PukiWiki内部リンクはすべて除去する

その他補足

  • PukiWikiはiniの設定を少し変えただけでデフォルトの状態、iniの設定やフォルダのパーミッションを設定すれば普通にPukiWikiとして使える
    • 危険なのでPKWK_READONLY=1にしてある
    • /mt/plugins/PukiWiki/svc/pukiwiki/
  • このエントリでcodeprettifyが効いてるのは別途PukiWikiのプラグインを追加しているため
  • エントリの下にあるPowered by PukiWikiは、ブログのテンプレートに直接書いているものでプラグインが出力するものではない