PukiWiki (1.4.7_notb_utf8) をMODxに埋め込むプラグイン&スニペットを書きました。
■ インストール
MODx, PukiWikiは導入済みであるとします。
ディレクトリ構成は
/var/www/example_com/modx/<br /> /index.php, assets, ...<br /> /pukiwiki/<br /> /index.php, wiki, ...
対して、URL構成は
http://example_com/ <- MODxのトップページ<br /> /pukiwiki/ <- MODxを介さないPukiWikiへのアクセス<br /> /wiki/ <- 本スニペットによるMODxを介したPukiWikiへのアクセス(proxyページ)
を仮定します。
1. PukiWikiに同梱のパッチ pukiwiki-1.4.7_notb_utf8.patch を当てます。
2. PuikWikiにいくつか修正を加えます。
1で適用したパッチにより、上で仮定したディレクトリ構成に対する修正が加わった状態となっています。
これを各自の環境にあうように変えてください。
a) index.phpのDATA_HOME, LIB_DIRを絶対パスで指定します。
b) pukiwiki.ini.phpのIMAGE_DIRを絶対パスで指定します。
c) pukiwiki.ini.phpの$script, $script_directory_linkのコメントアウトを外し (パッチにより外されています)、
$scriptは本スニペットによってアクセスできるようになる、MODxごしのPukiWikiの絶対URLを指定
(http://example_com/wiki/)
$raw_scriptは本来のPukiWikiの絶対URLを指定
(http://example_com/pukiwiki/)
$script_directory_indexは’index.php’のまま
とします。
3. スニペットを作成し、同梱のpukiwikiintegrator.phpを貼り付けます。
PUKIWIKIMODX_WIKI_PATH を、PukiWikiが実際に存在する絶対パス (/var/www/example_com/pukiwiki) にします。
最後にスラッシュをつけてはいけません。
4. プラグインを作成し、同梱のpukiwikirouter.phpを貼り付けます。
「システムイベント」タブでOnWebPageInitにチェックを入れます。
5. proxyとして用いるMODxのドキュメントを作成します。
このドキュメントのIDをプラグインのPAGE_PKWK_TOPに設定します。
このドキュメントのエイリアスをプラグインのPUKIWIKI_ALIASに設定します。
内容には[!PukiWikiIntegrator!]などと書きます。もちろん他の記述を加えても問題なく表示されます。
6. MODxの設定を確認します。
ツール > グローバル設定 > フレンドリURL で、
「フレンドリURLの使用」 はい
「フレンドリURLの接頭辞」 (空欄)
「フレンドリURLの接尾辞」 (空欄)
「フレンドリエイリアス」 はい
と設定し、保存します。
7. MODxの.htaccess (/var/www/example_com/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://example_com/wiki/ にアクセスすると、PukiWikiがMODxのなかに収まっています
■ 動作環境
以下の環境で開発しています。
Ubuntu Linux 8.04 x86 (2.6.22-14-server)<br /> Apache 2.2.4 + mod_rewrite<br /> MySQL 14.12 Distrib 5.0.45<br /> PHP 5.2.3-1ubuntu6.4<br /> MODx 0.9.6.3<br /> PukiWiki 1.4.7_notb_utf8
(
http://nanabit.net/modx/pukiwiki-integrator で少し前に公開したものです。対象が日本語Wikiということもあって、こちらに投げてみます。)