Tag: PukiWiki

PukiWikiとは

PukiWikiPHPで書かれたいわゆる WikiEngines のひとつ。

自作/改造プラグイン

自作プラグインおよび公開されているプラグインに独自の改造を施したものを公開しています。

カスタマイズ

プラグインなど

標準のもの以外に、以下のものをインストールしています。
attachref.inc.php
添付とその場への参照を同時に行うプラグイン

インストールしているプラグイン

ajaxtree.inc.php
Ajax を用いたツリーメニュー
geshi.inc.php
GeSHi を利用してソースコードを色分け表示する。(Plus! へのインストール時の注意点はこちら)
counterlist.inc.php
アクセスカウンタの一覧表をソートして表示
pagename_cache.php
get_existpages() で得られるリストをファイルにキャッシュして負荷軽減
Sonots' PukiWiki プラグインコレクション v2.1
contentsx, get_title, includex, lsx, navix, popularx, readmore, tag, tagcloud, taglist が含まれたパッケージ。ファイル名の最後が x のものは標準プラグインの機能拡張版。tag 関係は カテゴリ機能 を便利にしたもの。
tirenavi.inc.php
同階層の前後ページへのリンクを自動的に表示(自作)。

スキン

P_BLOGのスキンを継承して、P_BLOGのコンテンツに見せかけています。

負荷軽減

pagename_cache.php
get_existpages() で得られるリストをファイルにキャッシュして負荷軽減。
get_existpages を3行で軽くする
get_existpages() で得られるリストをメモリにスタックすることで2回目以降の呼び出し時の負荷軽減。(上記 pagename_cache.php を適用していれば不要)
ちょっと前まで使っていたスキンはこちら。

スキン

P_BLOG/PukiWikiとの連携
P_BLOGのスキンを継承して、P_BLOGのコンテンツに見せかけています。
PukiWiki/Skin
以前使っていたスキンはこちら。

UTF-8化

エンコードを標準の EUC-JP から UTF-8 に変更しています。*1
手順等はこちら

本体の改造

LastModified のフォーマット変更

lib/html.php > catbody
-	$lastmodified = $is_read ?  get_date('D, d M Y H:i:s T', get_filetime($_page)) .
-		' ' . get_pg_passage($_page, FALSE) : '';
+	$lastmodified = $is_read ?  get_date('M d, Y H:i:s', get_filetime($_page)) : '';
あるいは、日本語で表示したい場合は下記のように変更。
	$lastmodified = $is_read ?  format_date(get_filetime($_page)) : '';

入力支援

pukiwiki.dev:PukiWiki/1.4/ちょっと便利に/Javascriptで入力支援 で公開されているものを若干変更して利用させて頂いています。注意点は、lib ディレクトリの .htaccess を次のように変更する必要があること。(もしかしたらサーバーによって違うかもしれませんが)
<FilesMatch "\.php$">
	Order allow,deny
	Deny from all
</FilesMatch>

本体の改造

ページトップへのリンクを表示する見出しレベルを制限

lib/convert_html.php
class Body extends Element の getAnchor 最終行を変更

ページトップへのリンクを表示する見出しレベルを制限

lib/convert_html.php > class Body extends Element : getAnchor 最終行を変更
-		return array($text . $anchor, $this->count > 1 ? "\n" . $top : '', $autoid);
+		return array($text . $anchor, ($this->count > 1 && $level < 2)? "\n" . $top : '', $autoid);
$level < 見出しレベル
で、この見出しレベル以上ではページトップへのリンクを表示しない。(2にしているので、* では表示するが、** や *** では表示しない。) で、この見出しレベル以上ではページトップへのリンクを表示しません。(2にしているので、* では表示するが、** や *** では表示しない。)

XREAへの導入

XREACOM に導入して上手く動かない場合は、pukiwiki:PukiWiki/Install/xrea.com の内容を試してみる。ただし、サーバーによって仕様が異なるため、この限りでは無さそう。

リスト構造の左マージン設定解除

スタイルはスタイルシートで統一するため、HTMLに直接記述しないようにコメントアウトしました。
default.ini.php
  1. /////////////////////////////////////////////////
  2. // リスト構造の左マージン
  3. /*
  4. $_ul_left_margin = 0;   // リストと画面左端との間隔(px)
  5. $_ul_margin = 16;       // リストの階層間の間隔(px)
  6. $_ol_left_margin = 0;   // リストと画面左端との間隔(px)
  7. $_ol_margin = 16;       // リストの階層間の間隔(px)
  8. $_dl_left_margin = 0;   // リストと画面左端との間隔(px)
  9. $_dl_margin = 16;        // リストの階層間の間隔(px)
  10. $_list_pad_str = ' class="list%d" style="padding-left:%dpx;margin-left:%dpx"';
  11. */
  12.  
  13. /////////////////////////////////////////////////

プラグイン変更

geshi.inc.php

PukiWiki Plus! で extend/plugin ディレクトリにインストールするために15,17行目を以下のように変更。
// Directory path of GeSHi library
if (!defined('PLUGIN_GESHI_LIB_DIR')) {
-    define('PLUGIN_GESHI_LIB_DIR', PLUGIN_DIR . 'geshi/');
+    define('PLUGIN_GESHI_LIB_DIR', dirname(__FILE__) . '/geshi/');
}

// Directory path of configuration files
if (!defined('PLUGIN_GESHI_CONFIG_DIR')) {
-    define('PLUGIN_GESHI_CONFIG_DIR', PLUGIN_DIR . 'geshi_config/');
+    define('PLUGIN_GESHI_CONFIG_DIR', dirname(__FILE__) . '/geshi_config/');
}

ajaxtree.inc.php

PukiWikiのディレクトリ構成をデフォルトから変更した場合に対応。
// Directory path of cache files
if (!defined('PLUGIN_AJAXTREE_HTML_DIR')) {
-    define('PLUGIN_AJAXTREE_HTML_DIR', 'html/ajaxtree/');
+    define('PLUGIN_AJAXTREE_HTML_DIR', DATA_HOME . 'html/ajaxtree/');
}