最近の更新

関連


その他いろいろ

MODxでつくる! 最強のCMSサイト カバー
MODxでつくる! 最強のCMSサイト

はやくMODx 2.0でないかなあ

PukiWIki Integrator

PHPによるWikiエンジンPukiWikiをMODxと統合する
初出:2009年02/26 更新:2009年03/01

この文書のキーワード: PHP, MODx

MODxWiki — MODxのWikiではありません。

割と権限も明確、内容もテンプレート的なMODx。対して、殆ど誰でもプレーンテキストにマークアップしてだらだら書けてしまうWiki。 おおざっぱには共にCMSとして括られるこれらを統合するということがどういう意味を持つのか…
MODxでWiki的なことをするか、WikiでMODx的なことをするか(こちらは少し難しそうだが)、ではなくWiki in MODx。

利点の一つとしては、共にある程度の完成度が既に得られていることでしょうか。

概要

PukiWiki Integratorは、MODxにPHPで書かれた高機能なWikiシステムPukiWikiを埋め込むためのプラグインとスニペットです。 pkwk_titleというプレースホルダを生成するので、[+pkwk_title+]などとして、 下のスクリーンショットのように「Wiki » FrontPage」といった表示も可能です。 PukiWikiIntegrator in action

動作環境

以下の環境で開発しています。

大まかにはApache2 + mod_rewrite, MySQL5, PHP5, MODx 0.9が必須だと思われます。 何処まで遡って/最新版で動くかは検証していないので分かりません。

インストール

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で適用したパッチにより、上で仮定したディレクトリ構成を想定した修正が加わった状態となっています。 これを各自の環境にあうように変えてください。

  1. index.phpのDATA_HOME, LIB_DIRを絶対パスで指定します。
  2. pukiwiki.ini.phpのIMAGE_DIRを絶対パスで指定します。
  3. 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 で、

と設定し、保存します。

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.zipv1.1.020090301
PukiWikiIntegrator-1.0.0.zipv1.0.020090226

更新履歴

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のフォーラムなどでもいいかもしれません。