| 次のリビジョン | 前のリビジョン |
| web:pukiwiki [2006/12/07] – 作成 administrator | web:pukiwiki [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.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 '%'%%」を追加 |