PukiWIki Integrator
MODxとWiki — MODxのWikiではありません。
割と権限も明確、内容もテンプレート的なMODx。対して、殆ど誰でもプレーンテキストにマークアップしてだらだら書けてしまうWiki。
おおざっぱには共にCMSとして括られるこれらを統合するということがどういう意味を持つのか…
MODxでWiki的なことをするか、WikiでMODx的なことをするか(こちらは少し難しそうだが)、ではなくWiki in MODx。
利点の一つとしては、共にある程度の完成度が既に得られていることでしょうか。
概要
PukiWiki Integratorは、MODxにPHPで書かれた高機能なWikiシステムPukiWikiを埋め込むためのプラグインとスニペットです。
pkwk_titleというプレースホルダを生成するので、[+pkwk_title+]などとして、
下のスクリーンショットのように「Wiki » FrontPage」といった表示も可能です。
動作環境
以下の環境で開発しています。
- Ubuntu Linux 8.04 x86 (2.6.22-14-server)
- Apache 2.2.4 + mod_rewrite
- MySQL 14.12 Distrib 5.0.45
- PHP 5.2.3-1ubuntu6.4
- MODx 0.9.6.3
- PukiWiki 1.4.7_notb_utf8
インストール
MODx, PukiWikiは導入済みであるとします。 ディレクトリ構成は
/var/www/nanabit_dev/modx/
/index.php, assets, ...
/pukiwiki/
/index.php, wiki, ...
対して、URL構成は
http://nanabit_dev.private:8080/ <- MODxのトップページ
/pukiwiki/ <- MODxを介さないPukiWikiへのアクセス
/wiki/ <- 本スニペットによるMODxを介したPukiWikiへのアクセス(proxyページ)
を想定します。
1. PukiWikiに同梱のパッチ pukiwiki-1.4.7_notb_utf8.patch を当てます。
2. PuikWikiにいくつか修正を加えます。
1で適用したパッチにより、上で仮定したディレクトリ構成を想定した修正が加わった状態となっています。 これを各自の環境にあうように変えてください。
- index.phpのDATA_HOME, LIB_DIRを絶対パスで指定します。
- pukiwiki.ini.phpのIMAGE_DIRを絶対パスで指定します。
- pukiwiki.ini.phpの$script, $script_directory_linkのコメントアウトを外し(パッチにより外されています)、
$scriptは本スニペットによってアクセスできるようになる、MODxごしのPukiWikiの絶対URLを指定。
$raw_scriptは本来のPukiWikiの絶対URLを指定。
$script_directory_indexは'index.php'のままとします。
3. スニペットを作成し、同梱のpukiwikiintegrator-*.phpを貼り付けます。
PUKIWIKIMODX_WIKI_PATH を、PukiWikiが実際に存在する絶対パス (/var/www/nanabit_dev/pukiwiki) にします。 最後にスラッシュをつけてはいけません。
4. プラグインを作成し、同梱のpukiwikirouter-*.phpを貼り付けます。
「システムイベント」タブでOnWebPageInitにチェックを入れます。
5. proxyとして用いるMODxのドキュメントを作成します。
このドキュメントのIDをプラグインのPAGE_PKWK_TOPに設定します。 このドキュメントのエイリアスをプラグインのPUKIWIKI_ALIASに設定します。 内容にはなどと書きます。もちろん他の記述を加えても問題なく表示されます。
6. MODxの設定を確認します。
ツール > グローバル設定 > フレンドリURL で、
- 「フレンドリURLの使用」 はい
- 「フレンドリURLの接頭辞」 (空欄)
- 「フレンドリURLの接尾辞」 (空欄)
- 「フレンドリエイリアス」 はい
7. MODxの.htaccess (/var/www/nanabit_dev/modx/.htaccess/)を編集します。
# The Friendly URLs partと書いてある部分の前あたりに、
# Translate PukiWiki raw files RewriteRule ^wiki/(image|skin)/(.*)$ /pukiwiki/$1/$2 [L,QSA]を追加します。 PukiWikiは自分が http://.../wiki/ だと思っていますが、 実際のimageデータなどは http://.../pukiwiki/ にあるためです。
8. http://nanabit_dev.private:8080/wiki/ にアクセスします。
PukiWikiがMODxのなかに収まっています!
ダウンロード
| ファイル | バージョン | 日付 |
|---|---|---|
| PukiWikiIntegrator-1.1.0.zip | v1.1.0 | 20090301 |
| PukiWikiIntegrator-1.0.0.zip | v1.0.0 | 20090226 |
更新履歴
- v1.1.0 20090301
- MODxが[[...]]を置換するのを抑制, 他デバッグ
- v1.0.0 20090226
- 初回リリース
不具合など
関数名が衝突するため、WordPressIntegratorと併用する (一つのページでWordPressIntegratorとPukiWIkiIntegratorが同時に使用される)場合、 空のHTMLが表示されるなどの不具合が起きます。 現状、解決することは考えていませんが、sed -iなどで衝突してそうな関数(is_pageとか)を 力業でリネームしてしまえばなんとかなる可能性はあります。試していませんが。
単に同じMODxシステム上にWPIとPWIが併存していて、http://example.com/blog/ではWPI、 http://example.com/wiki/ではPWI、というような場合には問題になりません。 というと殆どありえない状況のようですが、例えばサイドバーに[!WordPressIntegrator?block=sidebar!] を含めていると、PWIを[*contents*]で呼んだときなどに発生します。
また、PukiWiki上で権限がない等のエラーが発生した場合、MODxの「枠」が外れて、Wikiが露出します。
連絡先など
バグ報告などの連絡は、メール uglydog。7bit■gmail.com か掲示板あたりでお願いします。 MODxのフォーラムなどでもいいかもしれません。
