使い方 - 開発版

Table of Contents

v1.7 との違い

以前は、とりあえず自動的にノートページを作成していましたが、コメント投稿後に始めてノートページが作成されるようになりました。 ページが存在していない最初の状態では template ファイルの内容か、デフォルトでは #comment が表示されます。

その時、template に使用して、新規にノートページを作ることができるプラグインに制限があります。 今のところ次の5つになります。

  • article
  • comment
  • insert
  • memo
  • vote

他のプラグインも許可するプラグインリストに加えれば動くかもしれませんが、確認してません。永遠にベータ機能です。

またこの機能追加のため、初期設定はプラグイン中に直接記述してもらうことになった等、設定方法が変更となりましたのでご注意ください。

初期設定

ノートページの接頭辞、wikinote 機能を使用しないページなどを wikinote.inc.php を直接開いて編集するか、 init/wikinote.ini.php 中で設定します。※plugin ディレクトリと同階層の init ディレクトリを作成し(なければ)、wikinote.ini.php をおきます。設定を分離でき、プラグインアップデートの際に楽なのでお奨めです。

$default_options['prefix']       = 'Note';
$default_options['except']       = '^$';
$default_options['title_prefix'] = 'Talk:';
  • prefix
    • ノートページの接頭辞。デフォルトでは Note/
  • except
    • wikinote 機能を適用しないページを正規表現(ereg)にて指定。デフォルトでは排除なし。
  • title_prefix
    • ノートページタイトルに使用する接頭辞(表示の際に prefix の文字列が title_prefix に置き換わる)。デフォルトでは Talk:

スキンへの設置

以下のようにスキンへ設置します。

$wikinote_navi = '';
if (exist_plugin('wikinote')) {
    $wikinote = new PluginWikinote();
    if ($wikinote->is_effect()) { 
        if ($wikinote->is_notepage()) {
            $wikinote_navi = $wikinote->show_tabs(array(
                array('cmd'=>'edit', 'label'=>'編集', 'href'=>'?cmd=edit&page=$page'),
                array('cmd'=>'diff', 'label'=>'差分', 'href'=>'?cmd=diff&page=$page'),
                array('cmd'=>'main', 'label'=>'本文'),
                array('cmd'=>'note', 'label'=>'コメント'),
            ));
        } else {
            $wikinote_navi = $wikinote->show_tabs(array(
                array('cmd'=>'main', 'label'=>'本文'),
                array('cmd'=>'note', 'label'=>'コメント'),
            ));
        }
    }
}
echo $wikinote_navi;

各関数の詳細はリファレンス

を参照してください。

Sample

pukiwiki 本家デフォルトスキンでは次のように設置すると良いかもしれません。 せっかく隙間があるので topicpath も表示させています。

wikinote.jpg

skin/pukiwiki.skin.php

  <td valign="top">
   <div id="body"><?php echo $body ?></div>
  </td>

// ------------------------------------------------------------
// Setting

// Set wikinote plugin
$wikinote_autocreate_notepage = false;
$wikinote_notepage_prefix_title = 'コメント';
$wikinote_tabs = array(
     array('cmd'=>'main', 'label'=>'本文'),
     array('cmd'=>'note', 'label'=>'コメント'),
     array('cmd'=>'edit', 'label'=>'編集', 'href'=>'?cmd=edit&amp;page=$page'),
     array('cmd'=>'diff', 'label'=>'差分', 'href'=>'?cmd=diff&amp;page=$page'),
);

// ------------------------------------------------------------
// Code

// Navigation tab (Wikinote)
$wikinote_navi = '';
if (exist_plugin('wikinote')) {
    $wikinote = new PluginWikinote();
    if ($wikinote->is_effect()) { 
        $wikinote_navi = $wikinote->show_tabs($wikinote_tabs);
    }
}

// ------------------------------------------------------------
// Output
・
・
  <td valign="top">
   <?php if ($wikinote->is_effect()) { echo $wikinote_navi; } ?>
   <?php if (arg_check('read') && exist_plugin_inline('topicpath')) { 
     echo '<div class="topicpath">' . do_plugin_inline('topicpath') . '</div>'; 
   } ?>
   <?php if ($wikinote->is_effect()) { echo '<div style="clear:both;"></div>'; } ?>
   <?php if ($wikinote->is_effect()) { echo '<div id="wrap_body">'; } ?>
   <div id="body"><?php echo $body ?></div>
   <?php if ($wikinote->is_effect()) { echo '</div>'; } ?>
  </td>
・
・

日本語を label に使用する場合は pukiwiki.skin.php の文字コードを pukiwiki に合わせてください(EUC or UTF-8)。

pukiwiki.css.php

/* wikinote.inc.php */
ul.wikinote{
	float:right;
	list-style-type:none;
	padding:0;
	margin:0;
	line-height:2em;
	overflow:visible;
}
ul.wikinote li{
	display:inline;
}
ul.wikinote li a {
	border:1px solid black;
	text-decoration:none;
	background-color:#DDEEFF;
	margin:0 5px;
	padding:4px 10px 1em 10px;
}
ul.wikinote li a:hover {
}
ul.wikinote li.selected a {
	color:#000;
	position:relative;
	z-index:1;
	line-height:2em;
	background-color:#fff;
	border-bottom:none;
	padding-bottom:.45em;/*adjust me*/
	text-decoration:none;
}

div#wrap_body {
	position:relative;
	background:#fff;
	margin:0px;
	padding:0px;
	border-top:1px solid black;
	padding-top:5px;
}

ダウンロード: filewikinote.css

配置を変えるような修正をする場合は、インラインのタブ・メニュー を読んで動作理解をしてからの ほうが最終的には時間短縮になるかもしれません。

Reference

  • CSS Tabs | unraveled - ul で下線を引いて background-color 上書き可能に。そのため float:right; で下線が width:100%; 的にならず
  • インラインのタブ・メニュー -- z-index: を用いて線を上書き(position:relative;のとき有効になる)。こちら式。

Additional Configuration - template

ノートページ用テンプレートが利用できます。

テンプレートページが作成されていない場合、

#comment

が使用されます。

テンプレートページ名の定義は通常ページと同じく、pukiwiki.ini.php 中の $auto_template_rules が使用されます。 デフォルト

$auto_template_rules = array(
        '((.+)\/([^\/]+))' => '\2/template'
);

の場合、例えば本文ページ名が ほげほげ/ぶらぶら の場合、ノートページ名が Note/ほげほげ/ぶらぶら になりますので、 Note/ほげほげ/template が探索されることになります。

私は

$auto_template_rules = array(
        '((.+)\/([^\/]+))' => '\2/template'
        '(([^\/]+)\/(.+))' => '\2/template'
        '(()(.*))'         => 'template'
);

のようにして、Note/ 接頭辞のついた全ページに Note/template を適用可、 ついでに全ページ用のテンプレート template を用意可にしています。 本当は Note/ほげほげ/ぶらぶら/ぺけぺけ → Note/ほげほげ/ぶらぶら/template → Note/ほげほげ/template → Note/template → template としたいのですが、この pukiwiki の仕様では無理があります。

ついでに $non_list にも template を登録して、隠れるようにしています。

$non_list = '^:|(^|\/)template$'

参考

dev:PukiWiki/1.4/マニュアル/テンプレート

FAQ

  • 途中で prefix を代えたくなった場合は

    prefix を変更して設置し、 rename プラグインを用いてノートページ名を変更すると良いでしょう。

  • 本文ページとノートページを一緒に移動したい

    それも rename プラグインでできます。

  • 本文ページとノートページを一緒に消去したい

    delete.inc.php を使用してみてください。

  • ノートページは最終更新(recent) に載って欲しくない

    prefix を :Note/ とするか、pukiwiki.ini.php 中の $non_list を

    $non_list = '^:|^Note\/';
    とすると良いでしょう。

Compatibility Check

Please join us to check compatibilities.

Compatible

Selection Vote
PHP4 3
PHP5 3
1.3.7 0
1.4.3 0
1.4.4 1
1.4.5_1 1
1.4.6 1
1.4.7 4
1.4.5plus-eucjp 0
1.4.6plus-u1-eucjp 1
1.4.6plus-u2-eucjp 1
1.4.5plus-u2-i18n 0
1.4.6plus-u1-i18n 0
1.4.6plus-u2-i18n 0
1.4.7plus-i18n 3
1.4.7plus-u2-i18n 1

Incompatible

Selection Vote
PHP4 1
PHP5 0
1.3.7 0
1.4.3 0
1.4.4 0
1.4.5_1 0
1.4.6 0
1.4.7 0
1.4.5plus-eucjp 0
1.4.6plus-u1-eucjp 0
1.4.6plus-u2-eucjp 0
1.4.5plus-u2-i18n 0
1.4.6plus-u1-i18n 0
1.4.6plus-u2-i18n 0
1.4.7plus-i18n 1
1.4.7plus-u2-i18n 1