差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
web:pukiwiki [2006/12/07] administratorweb:pukiwiki [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1
行 1: 行 1:
 +====== Pukiwikiの改造 ======
  
 +===== 設定 =====
 +==== pukiwiki.ini.phpの設定 ====
 +  * WikiNameを自動的にリンクをしない<code php>$nowikiname = 1;</code>
 +  * オートリンクを無効にする<code php>$autolink = 0;</code>
 +  * 編集に認証を必要とさせる<code php>$edit_auth = 1;
 +$edit_auth_pages = array(
 + '/^.*$/' => 'yourname',
 +);</code>
 +  * アンカー<code php>$fixed_heading_anchor = 0;</code>
 +  * 自動的に改行する<code php>$line_break = 1;</code>
 +
 +==== default.ini.phpの設定 ====
 +  * トップに戻るアンカーを非表示<code php>//$top = $_msg_content_back_to_top;
 +$top = '';</code>
 +  * 関連するリンクを常に表示する(負担がかかります)<code php>$related_link = 0;</code>
 +  * WikiName,BracketNameに経過時間を付加する<code php>$show_passage = 0;</code>
 +
 +===== プラグインで改造 =====
 +
 +==== 昨日&今日の人気記事ランキング ====
 +[[http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fpopular2.inc.php|popular2.inc.php]]
 +<code php>#popular2(20,TopPage|MenuBar|PukiWiki/.*|PukiWiki|RecentDeleted,recent,,notitle)
 +</code>
 +
 +==== ダウンロード人気ランキング ====
 +[[http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fdlrank.inc.php|dlrank.inc.php]]
 +
 +==== すべてのページのアクセス数の一覧 ====
 +[[http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fcounterview.inc.php|counterview.inc.php]]
 +
 +==== 画面上の「添付」でアップロードすると、その位置にファイルを参照 ====
 +[[http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fattachref.inc.php|attachref.inc.php]]
 +<code php>
 +&attachref;
 +&attachref(,nolink);
 +</code>
 +
 +===== URLの改造 =====
 +
 +==== トップページをpukiwikiにする ====
 +他のファイルを一つのディレクトリにまとめ、index.phpのみをルートに置く。
 +<code 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');
 +?>
 +</code>
 +
 +==== トップへのリンクをトップへ ====
 +トップページへのリンクに「?TopPage」とついてしまうので、それを消す
 +
 +plugin/topicpath.inc.php
 +<code php>//$topic_path[] = make_pagelink($defaultpage, PLUGIN_TOPICPATH_TOP_LABEL);
 +$topic_path[] = '<a href="' . $script . '" title="TopPage">Top</a>';</code>
 +
 +
 +===== 表示の改造 =====
 +
 +==== フォントの指定 ====
 +<code css>font-family: "Lucida Grande", "Osaka", "MS PGothic", sans-serif;</code>
 +ヒラギノを指定するとベースラインがずれてしまう。
 +
 +==== 表を左寄せ ====
 +<code css>.style_table {
 + padding:0px;
 + border:0px;
 + margin:auto;
 + text-align:left;
 + color:inherit;
 + background-color:#ccd5dd;
 + }</code>
 +のmarginを削除
 +
 +==== 日付表示で曜日をカット ====
 +  - [wiki]/lib/func.php<code php>function format_date($val, $paren = FALSE)
 +{
 + global $date_format, $time_format, $weeklabels;
 +
 + $val += ZONETIME;
 +
 + $date = date($date_format, $val) .
 +// ' (' . $weeklabels[date('w', $val)] . ') ' .
 + date($time_format, $val);
 +
 + return $paren ? '(' . $date . ')' : $date;
 +}
 +</code>
 +
 +
 +==== ナビゲーターにTopの文字を ====
 +タイトルの下のナビゲーターは、FrontPageの時に表示しないので、下記のように修正。
 +
 +plugin/topicpath.inc.php 32行目付近
 +<code php>if ($page == '' || $page == $defaultpage) return '';</code>
 +<code php>if ($page == '' || $page == $defaultpage) return 
 +'<span class="small"><a href="' . $script . '" title="TopPage">Top</a></span>';</code>
 +
 +==== ページにdescriptionを入れる ====
 +
 +  - [wiki]/pukiwiki.ini.php<code php>$page_title = 'Dimbula Tearoom';
 +</code>と、ページタイトルを指定している行の下に<code php>$description = '北海道のことやコンピュータ活用のWikiです。';</code>descriptionの文字列を記述する。
 +  - [wiki]/lib/html.php<code php>global $page_title;   // Title of this site
 +</code>という行の下に<code php>global $description;</code>という行を挿入。
 +  - [wiki]/skin/pukiwiki.skin.php<code php><title><?php echo $title ?> - <?php echo $page_title ?></title></code>と、タイトルを表示している行の下に<code php><meta name="description" content="<?php echo $description ?>" />
 +</code>descriptionを表示するタグを入れる
 +
 +==== feed meterへの対応 ====
 +  - descriptionを表示させる
 +  - 更新頻度を正しく表示させる
 +  - RSS内のリンクの修正(RecentChangesではなくトップへ)
 +  - RSS1.0を読ませるようにする
 +
 +  - [wiki]/pukiwiki.ini.php<code php>$page_title = 'Dimbula Tearoom';
 +</code>と、ページタイトルを指定している行の下に<code php>$description = '北海道のことやコンピュータ活用のWikiです。';</code>descriptionの文字列を記述する。
 +  - [wiki]/skin/pukiwiki.skin.php<code php><link rel="alternate" type="application/rss+xml" title="RSS"
 +href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>
 +</code>という行を探し、これを削除<code php><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" />
 +</code>を代わりに記述する。
 +  - [wiki]/plugin/rss.inc.php
 +    - global行の修正<code php>global $vars, $rss_max, $page_title, $whatsnew, $trackback;
 +</code>という行を探す。<code php>global $vars, $rss_max, $page_title, $whatsnew, $trackback, $description;
 +</code>と$descriptionを追加する。
 +    - $descriptionをエンコード<code php>$page_title_utf8 = mb_convert_encoding($page_title, 'UTF-8', SOURCE_ENCODING);
 +</code>とページタイトルをエンコードしている行の下に<code php>$description_utf8 = mb_convert_encoding($description, 'UTF-8', SOURCE_ENCODING);</code>descriptionをエンコードする行を追加。
 +    - RecentChangesをトップページへ。RecentChangesへリンクしている場所がいくつかある。<code php><link>$self?$r_whatsnew</link>
 +</code>や<code php><channel rdf:about="$self?$r_whatsnew"></code>から「?$r_whatsnew」を削除する。
 +    -descriptionを表示させる。descriptionを表示させる場所がいくつかある。<code php><description>PukiWiki RecentChanges</description>
 +</code>となっている行を<code php><description>$description_utf8</description></code>と修正する。
 +
 +
 +===== トラブル回避 =====
 +
 +==== 添付ファイルのダウンロードや画像表示がうまくいかない ====
 +plugin/ref.inc.phpの
 +<code php>$url = $script . '?plugin=</code>
 +とある部分(2カ所)を
 +<code php>$url = $script . 'x/?plugin=</code>
 +などのように広告が表示されないフォルダを指定する。
 +
 +==== カウンタープラグインのPHP5への対応 ====
 +  - [wiki]/plugin/counter.inc.php
 +UTIMEを検索し、「, UTIME」を削除する。
 +
 +===== 使い勝手をよくする改造 =====
 +
 +==== 編集画面にリンクソースを表示 ====
 +  - lib/html.phpを開く
 +  - 225行目あたり<code php>$body = <<<EOD
 +<form action="$script" method="post"></code>とある辺りの前の行に<code php>$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;</code>を追加
 +  - そのやや下の<code php></form></code>がある行の下に<code php>$forlink</code>を追加
 +
 +==== パスワードなしで添付ファイルをアップロード ====
 +attach.inc.php
 +<code php>
 +// 管理者だけが添付ファイルをアップロードできるようにする
 +define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE
 + 
 +// 管理者だけが添付ファイルを削除できるようにする
 +define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE
 +</code>
 +
 +
 +===== XreaのPukiwikiでNamazu検索 =====
 +
 +XreaのPukiwikiでNamazu検索を可能にする手順書。インデックス作成と検索が可能。2005-08-11
 +
 +kakasiはうまく動作していれば、ふりがなをきちんとつけてくれる。
 +漢字に対して1文字しかつかない場合は、kakasiはうまく作動していない。
 +文字コードから置き換えしたに過ぎない。
 +ふりがながつかない場合は、kakasiが置き換えるはずのファイルにアクセスしていないことになる。
 +
 +==== ファイルを準備 ====
 +  - kakasi.cgiを作成<code perl>#!/bin/sh
 +echo "Content-type: text/html
 +
 +<HTML>
 +<BODY>
 +"
 +/usr/local/bin/kakasi -kK -HK -JK < /virtual/hkd/public_html/cgi/PageReading > /virtual/hkd/public_html/cgi/PageReading2
 +
 +echo "</BODY></HTML>"
 +exit</code>
 +  - lib/file.phpを改造<code 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':</code>
 +  - pukiwiki.ini.phpを編集<code php>$pagereading_enable = 1;
 +$pagereading_kanji2kana_converter = 'kakasi';
 +$pagereading_kakasi_path = '/cgi/kakasi.cgi';</code>
 +
 +==== サーバーにディレクトリを作成 ====
 +
 +  /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検索 =====
 +
 +
 +==== ファイルを準備 ====
 +
 +  - [[http://pukiwiki.sourceforge.jp/index.php?PukiWiki%2FNamazu|pukiwiki.pl]]を入手
 +  - xreaのサーバーからnamazu.cgiを一度ダウンロードしておく。
 +    * /virtual/namazu/namazu.cgiです。
 +    * 【注意】namazu.cgiは常にバイナリーで扱ってください。
 +  - make_index.cgiを作成<code bash>#!/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</code>
 +  - mknmzrcを作成<code php>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";</code>
 +  - .namazurcを作成<code>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</code>
 +
 +==== サーバーにディレクトリを作成 ====
 +
 +  /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を改造<code bash>#!/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</code>
 +  - plugin/edit.inc.phpを改造<code php>header('Location: ' . get_script_uri() . '?' . rawurlencode($page));</code>を<code php>header('Location: ' . '/wiki/namazu/make_index.cgi?' . rawurlencode($page));</code>にする
 +
 +==== 【追記2006/07/04】URLエンコードの処理を追加 ====
 +
 +  * make_index.cgiを改造<code bash>#!/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>"</code>
 +
 +  * 【さらに修正2006/8-18】長いタイトルに途中で%が入ってしまうので、「%%| tr -d '\n' | tr -s '%'%%」を追加