Pukiwikiの改造
設定
pukiwiki.ini.phpの設定
- WikiNameを自動的にリンクをしない
$nowikiname = 1;
- オートリンクを無効にする
$autolink = 0;
- 編集に認証を必要とさせる
$edit_auth = 1; $edit_auth_pages = array( '/^.*$/' => 'yourname', );
- アンカー
$fixed_heading_anchor = 0;
- 自動的に改行する
$line_break = 1;
default.ini.phpの設定
- トップに戻るアンカーを非表示
//$top = $_msg_content_back_to_top; $top = '';
- 関連するリンクを常に表示する(負担がかかります)
$related_link = 0;
- WikiName,BracketNameに経過時間を付加する
$show_passage = 0;
プラグインで改造
昨日&今日の人気記事ランキング
#popular2(20,TopPage|MenuBar|PukiWiki/.*|PukiWiki|RecentDeleted,recent,,notitle)
ダウンロード人気ランキング
すべてのページのアクセス数の一覧
画面上の「添付」でアップロードすると、その位置にファイルを参照
&attachref; &attachref(,nolink);
URLの改造
トップページをpukiwikiにする
他のファイルを一つのディレクトリにまとめ、index.phpのみをルートに置く。
<?php define('DATA_HOME', 'x/'); define('PKWK_DIR', '/virtual/your-account/public_html/x/'); define('LIB_DIR', PKWK_DIR.'lib/'); require(LIB_DIR . 'pukiwiki.php'); ?>
トップへのリンクをトップへ
トップページへのリンクに「?TopPage」とついてしまうので、それを消す
plugin/topicpath.inc.php
//$topic_path[] = make_pagelink($defaultpage, PLUGIN_TOPICPATH_TOP_LABEL); $topic_path[] = '<a href="' . $script . '" title="TopPage">Top</a>';
表示の改造
フォントの指定
font-family: "Lucida Grande", "Osaka", "MS PGothic", sans-serif;
ヒラギノを指定するとベースラインがずれてしまう。
表を左寄せ
.style_table { padding:0px; border:0px; margin:auto; text-align:left; color:inherit; background-color:#ccd5dd; }
のmarginを削除
日付表示で曜日をカット
ナビゲーターにTopの文字を
タイトルの下のナビゲーターは、FrontPageの時に表示しないので、下記のように修正。
plugin/topicpath.inc.php 32行目付近
if ($page == '' || $page == $defaultpage) return '';
を
if ($page == '' || $page == $defaultpage) return '<span class="small"><a href="' . $script . '" title="TopPage">Top</a></span>';
ページにdescriptionを入れる
- [wiki]/pukiwiki.ini.php
$page_title = 'Dimbula Tearoom';
と、ページタイトルを指定している行の下に
$description = '北海道のことやコンピュータ活用のWikiです。';
descriptionの文字列を記述する。
- [wiki]/lib/html.php
global $page_title; // Title of this site
という行の下に
global $description;
という行を挿入。
- [wiki]/skin/pukiwiki.skin.php
<title><?php echo $title ?> - <?php echo $page_title ?></title>
と、タイトルを表示している行の下に
<meta name="description" content="<?php echo $description ?>" />
descriptionを表示するタグを入れる
feed meterへの対応
- descriptionを表示させる
- 更新頻度を正しく表示させる
- RSS内のリンクの修正(RecentChangesではなくトップへ)
- RSS1.0を読ませるようにする
- [wiki]/pukiwiki.ini.php
$page_title = 'Dimbula Tearoom';
と、ページタイトルを指定している行の下に
$description = '北海道のことやコンピュータ活用のWikiです。';
descriptionの文字列を記述する。
- [wiki]/skin/pukiwiki.skin.php
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>
という行を探し、これを削除
<link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>&ver=1" /> <link rel="alternate" type="application/rsd+xml" title="RSD" href="<?php echo $link['rss'] ?>&ver=2" />
を代わりに記述する。
- [wiki]/plugin/rss.inc.php
- global行の修正
global $vars, $rss_max, $page_title, $whatsnew, $trackback;
という行を探す。
global $vars, $rss_max, $page_title, $whatsnew, $trackback, $description;
と$descriptionを追加する。
- $descriptionをエンコード
$page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING);
とページタイトルをエンコードしている行の下に
$description_utf8 = mb_convert_encoding($description, 'UTF-8', SOURCE_ENCODING);
descriptionをエンコードする行を追加。
- RecentChangesをトップページへ。RecentChangesへリンクしている場所がいくつかある。
<link>$self?$r_whatsnew</link>
や
<channel rdf:about="$self?$r_whatsnew">
から「?$r_whatsnew」を削除する。
- descriptionを表示させる。descriptionを表示させる場所がいくつかある。
<description>PukiWiki RecentChanges</description>
となっている行を
<description>$description_utf8</description>
と修正する。
トラブル回避
添付ファイルのダウンロードや画像表示がうまくいかない
plugin/ref.inc.phpの
$url = $script . '?plugin=
とある部分(2カ所)を
$url = $script . 'x/?plugin=
などのように広告が表示されないフォルダを指定する。
カウンタープラグインのPHP5への対応
- [wiki]/plugin/counter.inc.php
UTIMEを検索し、「, UTIME」を削除する。
使い勝手をよくする改造
編集画面にリンクソースを表示
- lib/html.phpを開く
- 225行目あたり
$body = <<<EOD <form action="$script" method="post">
とある辺りの前の行に
$ss_page = '<a href="' . $script . '?' . $r_page . '" title="' . $s_page . '">' . $s_page . '</a>'; $forlink = <<<EOD <input type="text" name="query" size="80" value='$ss_page'> <br /> EOD;
を追加
- そのやや下の
</form>
がある行の下に
$forlink
を追加
パスワードなしで添付ファイルをアップロード
attach.inc.php
// 管理者だけが添付ファイルをアップロードできるようにする define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE // 管理者だけが添付ファイルを削除できるようにする define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE
XreaのPukiwikiでNamazu検索
XreaのPukiwikiでNamazu検索を可能にする手順書。インデックス作成と検索が可能。2005-08-11
kakasiはうまく動作していれば、ふりがなをきちんとつけてくれる。 漢字に対して1文字しかつかない場合は、kakasiはうまく作動していない。 文字コードから置き換えしたに過ぎない。 ふりがながつかない場合は、kakasiが置き換えるはずのファイルにアクセスしていないことになる。
ファイルを準備
- lib/file.phpを改造
case 'kakasi': /*FALLTHROUGH*/ case 'kakashi': $tmpfname = '/virtual/xxx/public_html/cgi/PageReading'; $fp = fopen($tmpfname, "w") or die_message("Cannot write temporary file '$tmpfname'.\n"); foreach ($readings as $page => $reading) { if($reading == '') { fputs($fp, mb_convert_encoding("$page\n", $pagereading_kanji2kana_encoding, SOURCE_ENCODING)); } } fclose($fp); chmod($tmpfname, 0666); virtual($pagereading_kakasi_path); $tmpfname = '/virtual/xxx/public_html/cgi/PageReading2'; $fp = fopen($tmpfname, "r"); foreach ($readings as $page => $reading) { if($reading == '') { $line = fgets($fp); $line = mb_convert_encoding($line, SOURCE_ENCODING, $pagereading_kanji2kana_encoding); $line = chop($line); $readings[$page] = $line; } } fclose($fp); break; case 'none':
- pukiwiki.ini.phpを編集
$pagereading_enable = 1; $pagereading_kanji2kana_converter = 'kakasi'; $pagereading_kakasi_path = '/cgi/kakasi.cgi';
サーバーにディレクトリを作成
/virtual/xxx/public_html/
に
/virtual/xxx/public_html/cgi/
というディレクトリを用意した
ファイルをサーバーに転送
- kakasi.cgiは/virtual/xxx/public_html/cgi/へ
- lib/file.phpとpukiwiki.ini.phpは所定の場所へ。
完成!!
ページ一覧を見る際に五十音順に並んでいるはず。
http://xxx.s151.xrea.com/?:config/PageReadingでふりがなが適切につけられているかをチェックしてみよう。
問題点
自動広告にしている場合、virtual関数で呼び出すときに、すでにページヘッダを送信しているようで、「すでにヘッダを送信しています」というエラーが出る。 リロードをすれば大丈夫で、動作には影響しない。
XreaのPukiwikiでNamazu検索
ファイルを準備
- pukiwiki.plを入手
- xreaのサーバーからnamazu.cgiを一度ダウンロードしておく。
- /virtual/namazu/namazu.cgiです。
- 【注意】namazu.cgiは常にバイナリーで扱ってください。
- make_index.cgiを作成
#!/bin/sh echo "Content-type: text/html <HTML><BODY> Make index...<HR> <TEXTAREA COLS=80 ROWS=50> " /usr/local/bin/mknmz -f /virtual/xxx/public_html/wiki/namazu/mknmzrc -t text/pukiwiki -O /virtual/xxx/public_html/wiki/namazu/index/ --media-type='text/pukiwiki' --indexing-lang=ja /virtual/xxx/public_html/wiki/wiki/ > /virtual/xxx/public_html/wiki/namazu/make_index.log cat /virtual/xxx/public_html/wiki/namazu/make_index.log echo "</TEXTAREA><HR>Finished!! </BODY></HTML>" exit
- mknmzrcを作成
package conf; # Don't remove this line! $ADDRESS = ''; $HTML_SUFFIX = "html?|[ps]html|php[34s]?"; $ALLOW_FILE = ".*\\.txt"; # plain text $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*|3A.*"; $FILTERDIR = "/virtual/xxx/public_html/wiki/namazu/filter";
- .namazurcを作成
Index /virtual/xxx/public_html/wiki/namazu/index Template /virtual/xxx/public_html/wiki/namazu/index Replace /virtual/xxx/public_html/wiki/wiki/ http://xxx.s151.xrea.com/wiki/\? Logging on Lang ja MaxHit 10000 MaxMatch 1000
サーバーにディレクトリを作成
/virtual/xxx/public_html/wiki/
に
/virtual/xxx/public_html/wiki/namazu/
というディレクトリを用意
さらに
/virtual/xxx/public_html/wiki/namazu/filter/ /virtual/xxx/public_html/wiki/namazu/index/
も用意しておく
ファイルをサーバーに転送
/virtual/xxx/public_html/wiki/namazu/
に
make_index.cgi mknmzrc .namazurc namazu.cgi
を入れる
/virtual/xxx/public_html/wiki/namazu/filter/
に
pukiwiki.pl
を入れる
インデックスを作成
http://xxx.s151.xrea.com/wiki/namazu/make_index.cgi
を実行
完成!!
http://xxx.s151.xrea.com/wiki/namazu/namazu.cgi
で検索可能に
インデックスを自動で更新
調べてわかったのですが、PHPをセーフモードで動かしているので、xreaはsystem関数が動作しない。
lib/files.phpの
system($update_exec . ' > /dev/null &');
という部分が機能していません。
pukiwiki.ini.phpの
$update_exec
を設定しても動きません。これに結構な時間を費やしてしまいました。
あと手段としては、ページの更新をしたあとにCGIとして呼び出し、その後に元のページを呼び出すという方法が考えられます。
- make_index.cgiを改造
#!/bin/sh echo "Content-type: text/html <HTML> <head> <meta http-equiv='Content-Type' content='text/html; charset=EUC-JP'> <META HTTP-EQUIV='refresh' CONTENT='0; url=http://xxx.s151.xrea.com/wiki/?$1'> </head> <BODY> Make index...<HR> <TEXTAREA COLS=80 ROWS=30> " /usr/local/bin/mknmz -f /virtual/xxx/public_html/wiki/namazu/mknmzrc -t text/pukiwiki -O /virtual/xxx/public_html/wiki/namazu/index/ --media-type='text/pukiwiki' --indexing-lang=ja /virtual/xxx/public_html/wiki/wiki/ > /virtual/xxx/public_html/wiki/namazu/make_index.log cat /virtual/xxx/public_html/wiki/namazu/make_index.log echo "</TEXTAREA><HR>Finished!!<br> <a href='http://xxx.s151.xrea.com/wiki/?$1'>Back</a> </BODY></HTML>" exit
- plugin/edit.inc.phpを改造
header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
を
header('Location: ' . '/wiki/namazu/make_index.cgi?' . rawurlencode($page));
にする
【追記2006/07/04】URLエンコードの処理を追加
- make_index.cgiを改造
#!/bin/sh echo "Content-type: text/html <HTML><head> <meta http-equiv='Content-Type' content='text/html; charset=EUC-JP'> <META HTTP-EQUIV='refresh' CONTENT='0; url=http://xxx.s151.xrea.com/wiki/?" echo "$1" | nkf -eMQ | tr = % | tr -d '\n' | tr -s '%' echo "'></head><BODY>Make index...<HR><TEXTAREA COLS=80 ROWS=30>" /usr/local/bin/mknmz -f /virtual/xxx/public_html/wiki/namazu/mknmzrc -t text/pukiwiki -O /virtual/xxx/public_html/wiki/namazu/index/ --media-type='text/pukiwiki' --indexing-lang=ja /virtual/xxx/public_html/wiki/wiki/ > /virtual/xxx/public_html/wiki/namazu/make_index.log cat /virtual/xxx/public_html/wiki/namazu/make_index.log echo "</TEXTAREA><HR>Finished!!<br><a href='http://xxx.s151.xrea.com/wiki/?" echo "$1" | nkf -eMQ | tr = % | tr -d '\n' | tr -s '%' echo "'>Back</a> </BODY></HTML>"
- 【さらに修正2006/8-18】長いタイトルに途中で%が入ってしまうので、「| tr -d '\n' | tr -s '%'」を追加