#contents *追加機能 [#e571c08f] pukiwikiデフォルトの設定からの変更点を記述していきます&br; 下にいくほど新しく追加した機能です *DSBLブラックリスト導入による公開プロキシの規制 [#l7cdb4fb] [[詳細ページ:http://blog.woremacx.com/2005/10/pukiwiki_bbq.html]]&br; [[プロクシじゃないのにPROXY規制に引っかかった場合の対処法:http://info.2ch.net/wiki/index.php?%A5%D7%A5%ED%A5%AF%A5%B7%A4%B8%A4%E3%A4%CA%A4%A4%A4%CE%A4%CBPROXY%B5%AC%C0%A9%A4%CB%B0%FA%A4%C3%A4%AB%A4%AB%A4%C3%A4%BF%BE%EC%B9%E7%A4%CE%C2%D0%BD%E8%CB%A1]]&br; 現在規制解除中 *style.inc.phpの追加 [#ie8a6f42] [[公式ページ:http://lsx.sourceforge.jp/?Plugin%2Fstyle.inc.php]]&br; [[参考ページ:http://pukiwiki.sourceforge.jp/dev/?PukiWiki%2F1.4%2F%A4%C1%A4%E7%A4%C3%A4%C8%CA%D8%CD%F8%A4%CB%2F%A5%C6%A1%BC%A5%D6%A5%EB%A4%CE%C3%E6%B1%FB%B4%F3%A4%BBor%B1%A6%B4%F3%A4%BB]]&br; 自由に CSS スタイルを指定できるようになるプラグイン&br; これにより表組の左/中央/右寄せが可能に。&br; (使用例:左寄せ) #style(class=table_left) |ここに表を入れてやると、左寄せになる| #style(style=clear:both;,end) (使用例:右寄せ) #style(class=table_right) |ここに表を入れてやると、左寄せになる| |ここに表を入れてやると、右寄せになる| #style(style=clear:both;,end) センタリングは標準スタイルです。 *nicovideo.inc.phpの追加 [#v0a922de] ニコニコ動画のサムネイル表示プラグインの追加。 #nicovideo(sm*****)で表示可能 (使用例) #nicovideo(sm1239937) *youtube.inc.phpの追加 [#y467233f] youtubeの動画のリンクを貼るプラグインを追加 #youtube(アドレスにあるv=以降の文字列を入力) で表示可能に。 (使用例) #youtube(GjXbeSr9SIk) *RecentChangesの取得件数を70から130に変更 [#w70346ad] pukiwiki.ini.phpの$maxshowを大きくしてRecentChangesの表示件数を130に。&br; 一時期300にしてたがかなり重いみたいなので減らした。 *2ch風掲示板bbs.inc.phpプラグインの設置 [#j3b75d96] [[2ch型掲示板プラグイン:http://wwww.vis.ne.jp/wiki/index.php?%B7%C7%BC%A8%C8%C4%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3]] UTF-8にしてるんで2ch専用ブラウザとかならバグるかも。&br; テスト段階。 *belong.inc.phpプラグイン追加 [#y9d79de5] [[公開ページ:http://221.243.18.83/~pukiwiki/index.php?%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Fbelong.inc.php]] &br;そのページに対してリンクしているページをリスト表示するプラグイン。&br; このページはこのプラグインがなければ成り立たないくらい重要なプラグインです。 #belong のみにするとそのページにリンクしている全ページを一覧にする。 &br;&br; (例)任意のページを除きたい場合 #belong("トナカイの乳"&~[HP回復]) トナカイの乳 へリンクしているページを表示するが HP回復 は表示しない。&br; 応用でこんなこともできます (例)任意のページを除きたい場合2 #belong("トナカイの乳"&~[HP回復<]) トナカイの乳 へリンクしているページを表示するが HP回復から始まるページ は表示しない。&br; (例)任意のページを除きたい場合3 #belong("トナカイの乳"&~[HP回復<]&~[クエスト<]) トナカイの乳 へリンクしているページを表示するが HP回復から始まるとクエストから始まるページ は表示しない。&br; っといった感じである程度を操作できます。&br; &br; うちのサイトではモンスターページとアイテムページが「一定の規則がないページ」となってます(これは初期段階でよく構想を練らなかったミス)&br; しかし、アイテムページとモンスターページが同時に同じページをリンクする事はほとんどない為、&br; アイテム、もしくはモンスターをbelongによって一覧したい場合は&br; #belong("ページ名"&~[Ver<]&~[クエスト<]&~[NPC<]&~[MAP<]&~[HP回復<]) これを入れるとほぼ間違いなく思いどーりになるでしょう。&br; :ページ名はbelongを入れるページ名。&~[Ver<]はパッチ情報からのリンク、&~[HP回復<]はそのページを取り扱ってる一覧ページ。&br; &br; ちなみにデフォルトで「コメントページ」からのリンクはbelongで弾く設定をしてあります。 リンクされているのに正常に#belongで表示できない場合は?plugin=linksコマンドを実行すると治るかも。&br; *region.inc.phpプラグイン追加 [#k420d7dc] 長ったらしい文章を、邪魔だと思うときは縮小表示しておき、&br; 見たいときにだけ展開できるようにする機能。&br; #region(さんぷる) この部分は表示したり隠したりできる。~ インラインタグ仕様可能。 #endregion (例)&br; #region(戦士装備) [[戦士帽子]]&br; [[戦士靴]]&br; [[戦士盾]]&br; #endregion *GSskinに変更 [#hc72188b] GSskinを適用してみました。&br; [[公開ページ:http://www.yiza.net/]] *別ホストを外部リンクとして扱い、クッションページも設けるjumpto.inc.php [#xa3949a1] [[公開ページ:http://teanan.homeip.net/pukiwiki/?%BC%AB%BA%EE%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Fjumpto.inc.php]]&br; 以上で外部リンクに矢印のようなマークが付き、外部へのリンクへは「target="_blank"」と同じ動作をするような設定も可能 *Flash.inc.php [#a85769b7] [[公開ページ: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%2Fflash.inc.php]] フラッシュを表示できるプラグイン。&br; #flash(flashムービーファイル,幅x高さ,...) &flash(flashムービーファイル,幅x高さ,...) (使用例) &flash(robo.swf,300x200,bgcolor=#000000); *linklist.inc.php追加 [#j4f0dd91] 自動相互リンク作成・プラグイン&br; [[linklist.inc.php>http://jo1upk.blogdns.net/saito/?%E8%87%AA%E4%BD%9C%2F%E6%97%A7%E7%89%88%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Flinklist.inc.php]] *サーバー移行によるPHP5.2.5へのプラグインの対応 [#la051982] 新サーバーはPHP5.2.5。&br; ①昨日のカウンターが「0」になる&br; ②コメントに「new!」がつかない、の二つの問題が出てきた。 &br; 解決策&br; ①http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F141 &br; counter.inc.php 111行目あたり&br; - $is_yesterday = ($counters[$page]['date'] == get_date('Y/m/d', strtotime('yesterday', UTIME))); + $is_yesterday = ($counters[$page]['date'] == get_date('Y/m/d', strtotime('yesterday'))); 修正後解決&br; &br; ②http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F120 &br; new.inc.php 38行目あたり&br; - $timestamp = strtotime($date); - if ($timestamp === -1) return '&new([nodate]){date}: Invalid date string;'; + $timestamp = strtotime(preg_replace('/\([^\x00-\x7F]+\)/','',$date)); + if(version_compare(phpversion(),'5.1')<0){ + if ($timestamp === -1) return '&new([nodate]){date}: Invalid date string;'; + }else{ + if ($timestamp === FALSE) return '&new([nodate]){date}: Invalid date string;'; + } 修正後解決 *replace.inc.php [#q8c283f9] 一括置換プラグイン。&br; コメント欄の書込みも置換されちゃうのが難点かな・・・&br; [[公式ページ>http://pukiwiki.cafelounge.net/plus/?Plugin%2Freplace.inc.php]] *regexp.inc.php [#d20a9dcf] 一括置換プラグイン。&br; 複数行,正規表現に対応&br; [[公式ページ>http://lsx.sourceforge.jp/?Plugin%2Fregexp.inc.php]]&br; cmd:regexp&br; *Javascriptで入力支援 [#i9ee2de8] Javascriptで入力支援プラグイン。&br; [[inputtoolbar.inc.php>http://lunatear.net/archives/000700.html]]&br; 導入は↑のページを読み、進めればいいが、結構古い記事の為、Pukiwiki1.4.5_1用になっている。&br; Pukiwiki1.4.7でも使えたけど、Pukiwiki Plus!のファイルを持ってくる際は&br; コメントにあるようにpukiwiki-1.4.5plus-i18n-u2.tar.gz のものをDLしないと無理。&br; &br; 導入が出来たかどうかを#inputtoolbarで読み出して、無事表示が確認できれば、&br; プラグインを読み出さなくても表示されるように改造する&br; &br; コメントに特に入力支援は現在のところ必要ないと思ったので、&br; 編集画面にのみ入力支援を表示するようにした。&br; -まずsikin/pukiwiki.skin.phpを改造 上の方の<head>の下あたりに&br; <script type="text/javascript" src="skin/inputhelper.js"></script> を追加。&br; &br; 下の方の</body>の上あたりにv <script type="text/javascript" src="skin/assistloaded.js" ></script> を追加&br; &br; -編集画面で使う為にlib/html.phpを編集。 <div class="edit_form"> <form action="$script" method="post" style="margin-bottom:0px;"> $template $addtag こんな感じの記述を探す。&br; うちの場合はテキストエリアとページの更新の間に表示させたかった為だいたいその辺りにある&br; <textarea name="msg" rows="$rows" cols="$cols">$s_postdata</textarea> という記述に続いて、 <map id="map_button" name="map_button"> <area shape="rect" coords="0,0,22,16" title="URL" alt="URL" href="#" onclick="javascript:pukiwiki_linkPrompt('url'); return false;" /> <area shape="rect" coords="24,0,40,16" title="B" alt="B" href="#" onclick="javascript:pukiwiki_tag('b'); return false;" /> <area shape="rect" coords="43,0,59,16" title="I" alt="I" href="#" onclick="javascript:pukiwiki_tag('i'); return false;" /> <area shape="rect" coords="62,0,79,16" title="U" alt="U" href="#" onclick="javascript:pukiwiki_tag('u'); return false;" /> <area shape="rect" coords="81,0,103,16" title="SIZE" alt="SIZE" href="#" onclick="javascript:pukiwiki_tag('size'); return false;" /> </map> <map id="map_color" name="map_color"> <area shape="rect" coords="0,0,8,8" title="Black" alt="Black" href="#" onclick="javascript:pukiwiki_tag('Black'); return false;" /> <area shape="rect" coords="8,0,16,8" title="Maroon" alt="Maroon" href="#" onclick="javascript:pukiwiki_tag('Maroon'); return false;" /> <area shape="rect" coords="16,0,24,8" title="Green" alt="Green" href="#" onclick="javascript:pukiwiki_tag('Green'); return false;" /> <area shape="rect" coords="24,0,32,8" title="Olive" alt="Olive" href="#" onclick="javascript:pukiwiki_tag('Olive'); return false;" /> <area shape="rect" coords="32,0,40,8" title="Navy" alt="Navy" href="#" onclick="javascript:pukiwiki_tag('Navy'); return false;" /> <area shape="rect" coords="40,0,48,8" title="Purple" alt="Purple" href="#" onclick="javascript:pukiwiki_tag('Purple'); return false;" /> <area shape="rect" coords="48,0,55,8" title="Teal" alt="Teal" href="#" onclick="javascript:pukiwiki_tag('Teal'); return false;" /> <area shape="rect" coords="56,0,64,8" title="Gray" alt="Gray" href="#" onclick="javascript:pukiwiki_tag('Gray'); return false;" /> <area shape="rect" coords="0,8,8,16" title="Silver" alt="Silver" href="#" onclick="javascript:pukiwiki_tag('Silver'); return false;" /> <area shape="rect" coords="8,8,16,16" title="Red" alt="Red" href="#" onclick="javascript:pukiwiki_tag('Red'); return false;" /> <area shape="rect" coords="16,8,24,16" title="Lime" alt="Lime" href="#" onclick="javascript:pukiwiki_tag('Lime'); return false;" /> <area shape="rect" coords="24,8,32,16" title="Yellow" alt="Yellow" href="#" onclick="javascript:pukiwiki_tag('Yellow'); return false;" /> <area shape="rect" coords="32,8,40,16" title="Blue" alt="Blue" href="#" onclick="javascript:pukiwiki_tag('Blue'); return false;" /> <area shape="rect" coords="40,8,48,16" title="Fuchsia" alt="Fuchsia" href="#" onclick="javascript:pukiwiki_tag('Fuchsia'); return false;" /> <area shape="rect" coords="48,8,56,16" title="Aqua" alt="Aqua" href="#" onclick="javascript:pukiwiki_tag('Aqua'); return false;" /> <area shape="rect" coords="56,8,64,16" title="White" alt="White" href="#" onclick="javascript:pukiwiki_tag('White'); return false;" /> </map> <script type="text/javascript" src="skin/assistant.js" ></script> と記述。&br; これはinputtoolbar.inc.php内の必要部分に&br; <script type="text/javascript" src="skin/assistant.js" ></script> を追加したもの。&br; やってないけどたぶんコメントも pcomment.inc.phpとか同じ要領でいじればできると思う&br; 成功したら編集画面のテキストエリアの下に入力支援が表示される&br; #ref(javasien.png) ちょっとは楽になるかな?&br; ちなみにinputtoolbar.inc.phpは削除しても動く *get_existpages() の高速化 [#i86964da] [[pagename_cache.php>http://www.revulo.com/PukiWiki/Cache/PagenameCache.html]]&br; 全ページ名のリストを得る get_existpages() という関数をキャッシュ利用し、wiki高速化&br; うちの核ともいれるbelong.inc.phpプラグインはもろこの関数を使用しているため、高速化が期待できる・・・!&br; と思って入れてみると、かなり早くなった!!!かも!&br; &br; 導入・・・サイトのdiffを使用すればいいんだけど使うのdiffうまく使えない・・・てわけで手動&br; -lib/file.php // Remove the page unlink($file); + // Update pagename cache + pagename_cache_update(); + // Update RecentDeleted, and remove the page from RecentChanges lastmodified_add($whatsdeleted, $page); // Optional actions if ($dir == DATA_DIR) { + // Update pagename cache + if (! $file_exists) pagename_cache_update(); + // Update RecentChanges (Add or renew the $page) if ($timestamp === FALSE) lastmodified_add($page); } // Get a page list of this wiki -function get_existpages($dir = DATA_DIR, $ext = '.txt') +function get_existpages($dir = DATA_DIR, $ext = '.txt', $cache = true) { + if ($dir == DATA_DIR && $ext == '.txt' && $cache == true) { + return pagename_cache_get_existpages(); + } + $aryret = array(); $pattern = '((?:[0-9A-F]{2})+)'; -lib/pukiwiki.php require(LIB_DIR . 'link.php'); require(LIB_DIR . 'auth.php'); require(LIB_DIR . 'proxy.php'); +require(LIB_DIR . 'pagename_cache.php'); if (! extension_loaded('mbstring')) { -plugin/rename.php } + // Update pagename cache + pagename_cache_update(); + $postdata = get_source(PLUGIN_RENAME_LOGPAGE); *スタイルシートの非 PHP 化による負荷軽減 [#paaaa805] [[参考>http://www.revulo.com/PukiWiki/Cache/CSS.html]]&br; ページの説明では、PHPをいじってCSSを作る方法がとられてたけど、&br; 実際、自分のページに読まれてるCSSをコピペで作ると楽。&br; <?php $gs2color = ""; if (defined('PKWK_SKIN_GS2_INDEX_COLOR')) $gs2color = PKWK_SKIN_GS2_INDEX_COLOR; echo <<<EOD <link rel="stylesheet" type="text/css" media="screen" href="skin/pukiwiki.css" /> EOD; ?> pukiwiki.skin.phpのヘッダーらへんに追加。&br; print用は多分いらないと思うので削除。&br; だいぶ早くなったと思うような思わないような・・・。&br; GS2スキンの為ちょっと手間取ったけど、実際のCSSは[[こちら>http://maplesonar.com/wiki/skin/pukiwiki.css]] *ref.inc.phpの改造 [#z2675505] 画像を表示させるプラグインのHTTPヘッダのOUTPUT部分をちょっと改造。&br; うちのwikiでは追加された画像が変更になる事はほとんどない為&br; 「画像のみ」キャッシュを3ヶ月近く使用する事にする。&br; 最後の方の行に&br; header('Cache-control: private, max-age=720000'); を追加。これで転送量が少しでも減るといいという目論見。&br; キャッシュフォルダを確認してみるとファイル有効期限が指定した時間になっているため&br; 多分成功しているが、1週間くらいは様子見をしたい。&br; *tag.inc.phpの導入 [#g4a103f7] ページをタグ付けするプラグイン。地域別モンスター検索のソートに使えそう。&br; [[ページ>http://lsx.sourceforge.jp/?Plugin%2Ftag.inc.php]]&br; index.php?cmd=tag のようにアクセスするとキャッシュをクリーンアップできます。 *新鯖になった為、サーバーによる負荷対策&高速化も可能に [#ddb659be] **Apache mod_deflateの導入 [#d4cc23a6] httpd.confに以下を追加 <Location /> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI\.(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rdf+xml </Location> 画像はすでに圧縮されてるから拒否設定に。 しかしpukiwikiではAttachやrefで添付された画像は MIME/Typeによらず強制的に圧縮されてしまう ので 「ref.inc.phpの改造」にあった部分に header('Content-Encoding: none'); を追加してあげる。 **Apache mod_expiresの導入 [#bdaad711] .htaccess ExpiresActive On ExpiresByType image/gif “access plus 1 days” ExpiresByType image/jpeg “access plus 1 days” ExpiresByType image/png “access plus 30 days” ExpiresByType application/x-shockwave-flash “access plus 1 years” ExpiresByType application/rss+xml “access plus 30 minutes” ExpiresByType application/x-javascript “access plus 20 days” #ExpiresByType text/html “modification plus 15 minutes” ExpiresByType text/css “access plus 20 days” みたく設定した。 htmlをキャッシュするとコメントや更新の時もキャッシュを表示しちゃう かといって更新日時であるmodificationを指定したら今度は完全無視される。 のでコメントアウトしてあきらめた。 こちらで設定をしてしまったら 「ref.inc.phpの改造」にあった header('Cache-control: private, max-age=720000'); の部分は削除 **PHPアクセレーターのeAcceleratorを導入 [#uedab579] インストール方法などは割愛