使用法 - 開発版
| Table of Contents |
プラグイン設定項目一覧
必要ならば変更できる設定項目です。
dump2html.inc.php
を開いて以下の部分を編集するか、
plugin ディレクトリと同階層の init ディレクトリ(なければ作成)に dump2html.ini.php を作成し、上書き項目を記述します。設定を別ファイルに分離しておくと、プラグインアップデートの際に楽なのでお奨めです。
サンプル:dump2html.ini.php
$this->CONF['DUMPDIR'] = DATA_HOME . 'html/'; $this->CONF['ADMINONLY'] = TRUE; $this->CONF['BLOCK_ADMINONLY'] = TRUE; $this->CONF['WAITTIME'] = 200000; // for method=http in micro seconds $this->CONF['REDIRECT_AFTER_DUMP'] = FALSE; $this->CONF['SPECIAL_PAGES'] = array($whatsnew, $whatsdeleted); $this->CONF['404_PAGE'] = '404'; $this->CONF['method'] = 'http'; // 'http' or 'dump' $this->CONF['overwrite'] = FALSE; $this->CONF['treedump'] = TRUE; $this->CONF['modify_href'] = TRUE; $this->CONF['modify_linkrel'] = TRUE; $this->CONF['href_urlstyle'] = 'relative'; // 'relative' or 'absolute' $this->CONF['linkrel_urlstyle'] = 'relative'; // 'relative' or 'absolute' $this->CONF['dumpreadauth'] = TRUE; $this->CONF['username'] = ''; // for BasicAuth in the case of method='http' $this->CONF['userpass'] = '';
- DUMPDIR
- HTML ファイル出力先の設定です。
- ADMINONLY=bool
- デフォルトではアクション型で一括ダンプの際に管理者権限を必要とします。FALSE にすることで無効にもできます。
- BLOCK_ADMINONLY=bool
- ブロック型でも管理者権限を必要とするかどうかを設定します。念のためデフォルトでは有効になっていますが、ダウンロード後すぐに無効にするかもしれません。
- REDIRECT_AFTER_DUMP=bool
- ブロック型や書き込み時自動ダンプで、ダンプ後 html ファイルに飛びます。デフォルトではオフになっています。
- SPECIAL_PAGES
- ブロック型や書き込み時自動ダンプで、対象ページがダンプされると同時に、常にダンプしなおすページです。
- 404_PAGE
- 書き込み時自動ダンプで、ページ削除時のリダイレクト先となるページ。
ページがない場合は自動で 'Page was deleted.' という内容で作成されますが、自由に改変可能です。
- 書き込み時自動ダンプで、ページ削除時のリダイレクト先となるページ。
- method=dump|http
- dump: 内部的に pukiwiki の関数を呼び html 出力を取得(以前のデフォルト動作、現在サポート対象外)
- http: サーバ上から同サーバに HTTP アクセスを行い pukiwiki の html 出力を取得。
- overwrite=bool
- 強制上書き。off の場合、html ファイルと wiki ページのタイムスタンプを比べ wiki ページが新しければ上書きダンプします。
- treedump=bool
- 静的 HTML ファイル名にディレクトリ階層を使用(例:ページ Hoge/ほげ → Hoge/E381BBE38192.html)。off の場合、一階層に保存(例:ページ Hoge/ほげ → Hoge27E381BBE38192.html)。
- modify_href=bool
- HTML ファイル内のWikiページ間のリンク置き換え処理を行う。デフォルトで有効
- modify_linkrel=bool
- HTML ファイル内のcss, javascript, img ファイルへのリンク置き換え処理を行う。デフォルトで有効
- href_urlstyle=relative|absolute
- relative: リンク置き換え処理の際に相対URLを使用
- absolute: リンク置き換え処理の際に絶対URLを使用
- linkrel_urlstyle=relative|absolute
- relative: リンク置き換え処理の際に相対URLを使用
- absolute: リンク置き換え処理の際に絶対URLを使用
- dumpreadauth=bool
- 閲覧制限されているページもダンプ。
補足: ダンプされた html ファイルを同様に閲覧制限したい場合はは各自 .htaccess を編集して pukiwiki とは別に閲覧制限する必要があります(解説はしません)。
- 閲覧制限されているページもダンプ。
- username
- 閲覧制限ページ用ユーザ名。閲覧制限されているページを method=http (デフォルト)で取得する際にユーザ名、パスワードが必要になります。
補足: この機能を使用する場合 PEAR の HTTP/Request.php が必要になります(インストール方法の解説はしません)。
- 閲覧制限ページ用ユーザ名。閲覧制限されているページを method=http (デフォルト)で取得する際にユーザ名、パスワードが必要になります。
- userpass
- Username に対するパスワード。
How to use
一括ダンプ(アクション型)
アクション型プラグインとしてアクセスしてください。
http://あなたのPukiWikiサイト/index.php?cmd=dump2html
cmd=dump2html
項目は以下の意味です。
- Admin Password
- 管理者パスワード
- Filter Pages (ereg)
- 対象ページを絞りこむときに使用。指定しなければ全ページ。
- A Page
- 特定の1ページだけ指定するときに使用。
- Force to Overwrite
- 強制上書き。未チェックの場合、html ファイルと wiki ページのタイムスタンプを比べ wiki ページが新しければ上書きダンプします。
参照時自動ダンプ(ブロック型)
ページ参照時に自動で html 変換させます。 html ファイルが存在しないか、html ファイルが wiki ページに比べて古い場合にダンプされます。
デフォルトでは BLOCK_ADMINONLY が有効になっているので、その場合一度アクション型でログインするなどしないと動作しません。
#dump2html
MenuBar に設置しておくと良いかもしれませんが、その場合 REDIRECT_AFTER_DUMP が動作するようにするには本体改変が必要です Hack/menu.inc.php。#そもそもブロック型で REDIRECT_AFTER_DUMP は必要なのだろうか。
書き込み時自動ダンプ(本体改造)
各ページを書き込み時に自動的にダンプするようにします。個別にブロック型を設置する必要がありません。
できるだけ Pukiwiki 本体には手をいれないように頑張ってきたのですが、本体に手をいれるしかなさそうです。
lib/file.php#page_write 関数の末尾に
log_write('update',$page);
+ if (exist_plugin('dump2html')) {
+ do_plugin_init('dump2html');
+ plugin_dump2html_write_after($page);
+ }
を追加します。
用途別本体&プラグイン設定まとめ
html バックアップ
wiki ページを html ファイルとしてバックアップを取っておき、pukiwiki が稼動するウェブサーバがなくても参照できるようにする。
- dump2html.inc.php を plugin ディレクトリにダウンロード。
- html ファイルが保存されるディレクトリ(デフォルトでは wiki ディレクトリと同階層の html ディレクトリ)を作成、書き込み許可を出す。
- 一括ダンプ(アクション型)する。
- ダンプ先ディレクトリ、skin, image ディレクトリを大事にとっておく。
html 公開負荷軽減(PukiWiki Plus!)
ユーザには html ファイルにアクセスして閲覧してもらい、編集時には、編集→自動ダンプ→htmlファイルに自動リダイレクト、となるように設定、改造する。
- dump2html.inc.php を plugin ディレクトリにダウンロード。
- html ファイルが保存されるディレクトリ(デフォルトでは wiki ディレクトリと同階層の html ディレクトリ)を作成、書き込み許可を出す。
3. plugin ディレクトリと同階層の init ディレクトリ(なければ作成)に dump2html.ini.php を以下の内容で作成
<?php exist_plugin('dump2html'); $plugin = new PluginDump2html(); $plugin->CONF['REDIRECT_AFTER_DUMP'] = TRUE; ?>
4. html ファイルから css, javascript 等を参照できるように絶対アドレスに変更する。pukiwiki.ini.php
-define('ROOT_URI', ''); +define('ROOT_URI', 'あなたのPukiWikiサイト絶対アドレス/');
5. 書き込み時自動ダンプ(本体改造) を行っておく
6. 一括ダンプ(アクション型)しておく。
html 公開負荷軽減(PukiWiki 本家またはPlus!)
ユーザには html ファイルにアクセスして閲覧してもらい、編集時には、編集→自動ダンプ→htmlファイルに自動リダイレクト、となるように設定、改造する。
PukiWiki 本家には Plus! にはある SKIN_URI, IMAGE_URI の仕組みがなく、javascript, css へのアドレスをうまく絶対アドレスに変更することができない。 発想の転換で、html ファイル群を index.php と同階層に出力し、 SKIN_DIR, IMAGE_DIR の設定を変更せずにすむようにする。
- dump2html.inc.php を plugin ディレクトリにダウンロード。
- index.php のあるディレクトリに書き込み許可を出す。
3. plugin ディレクトリと同階層の init ディレクトリ(なければ作成)に dump2html.ini.php を以下の内容で作成
<?php exist_plugin('dump2html'); $plugin = new PluginDump2html(); $plugin->CONF['REDIRECT_AFTER_DUMP'] = TRUE; $plugin->CONF['DUMPDIR'] = ''; $plugin->CONF['treedump'] = FALSE; ?>
#このとき、pukiwiki.ini.php で index.php が省略される設定になっていないことを確認する($script_directory_index の行をコメントアウト)。 index.html が index.php と同階層に出力されるが、その場合通常は index.php よりも index.html が優先されるため、index.php を省略できなくなる。
4. 書き込み時自動ダンプ(本体改造) を行っておく。
5. 一括ダンプ(アクション型)しておく。
6. おまけ - index.php の移動
ただ、これだけでは、pukiwiki のファイルと html ファイルが同階層でごちゃごちゃになってしまうため、それが気になる場合は、pukiwiki ファイル群を下位ディレクトリにまとめて、
index.php pukiwiki/ぷきウィキファイル群
となるような構成にすると少しはすっきりする。ファイル群を移動し、設定ファイルを編集します
本家
index.php
-define('DATA_HOME', ''); -define('LIB_DIR', 'lib/'); +define('DATA_HOME', 'pukiwiki/'); +define('LIB_DIR', 'pukiwiki/lib/');
pukiwiki.ini.php
-define('SKIN_DIR', 'skin/'); -define('IMAGE_DIR', 'image/'); +define('SKIN_DIR', DATA_HOME . 'skin/'); +define('IMAGE_DIR', DATA_HOME . 'image/');
default.ini.php
-define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'pukiwiki.skin.php'); +define('SKIN_FILE', SKIN_DIR . 'pukiwiki.skin.php');
ついでにPlus!の場合
index.php
-define('SITE_HOME', ''); -define('DATA_HOME', ''); +define('SITE_HOME', 'pukiwiki/'); +define('DATA_HOME', 'pukiwiki/');
pukiwiki.ini.php
-define('SKIN_DIR', 'skin/'); -define('IMAGE_DIR', 'image/'); +define('SKIN_DIR', DATA_HOME . 'skin/'); +define('IMAGE_DIR', DATA_HOME . 'image/');
ハック
出力HTMLファイル名の変更
出力されるHTMLファイル名が気にいらない場合変更できます。 例として md5(ページ名).html を使用するものを書いておきます。
plugin ディレクトリと同階層の init ディレクトリ(なければ作成)内の dump2html.ini.php (なければ作成)に以下の内容を追加
<?php class PKWKHtmlLinkModifierUser extends PKWKHtmlLinkModifier { function get_dump_filename(&$page, $treedump = FALSE) { return md5($page) . '.html'; } } ?>
この場合は treedump オプションは意味のないものになりますが、問題ないでしょう。同様に他の関数も上書きユーザ定義できます。


