* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
ホーム
一覧
検索
最終更新
リンク
ヘルプ
新規
リンク
手動リンク
自動相互リンク
駄でべWiki:FrontPage
ヘルプ
整形ルール
プラグインマニュアル
浮子屋商店もよろしく。
PukiWiki/1.4/マニュアル/プラグイン/独自に追加したもの/contentsx
をテンプレートにして作成
開始行:
**ページの目次を作成する #contents のプラグイン化、拡張 [...
#contentsx
*説明 [#b25f9fa6]
ページの目次を作成するプラグインです。
[[#contents>org:PukiWiki/1.4/Manual/Plugin/A-D#content_1_...
**本体組み込み #contents との違い [#k9cb86b6]
-設置行以降の見出しのみリストする機能
-MenuBar に設置しても有効
-見出しレベル指定機能
-表示件数指定機能
-正規表現による見出しのフィルタ機能
-正規表現による見出しの除外フィルタ機能
-キャッシュ機能
-リンク形態指定機能(リンクしないなど)
-固定アンカ必須
**旧 contents2_1からの変更点 [#m17ed6bb]
-固定アンカ必須
--pukiwiki.ini.php で $fixed_heading_anchor = 1;
-相対アンカのバグ
--プラグインという形で完全対応は不可能なことがわかってい...
-display 削除
--inline 却下
-depth=2-5 -> depth=2:5
--depth=-1:-5 (最後から、最後から5番目まで) が可能に
--depth=-1+5 なども可能
--depth=(1,3,5:9) のように複数指定も可能
-number -> num
--number=10 (10個) ではなく num=1:10 (depth と同じ書式)
-キャッシュ機能
-キャッシュリセット用のアクション型
-link オプション追加
-出力HTML
変更なし
-page
-fromhere
-hierarchy
-compact
-except
-filter
*書式 [#jcb5f796]
#contentsx(オプション)
option=bool なオプションは共通して、 option, option=true,...
-fromhere=bool
--#contentsx がある行以降の見出しのみをリストする。デフォ...
備考:page オプションで別ページを指定した場合は強制的に o...
-include=bool
--#include プラグインで取り込んでいるページとその見出しも...
デフォルトで有効。
-hierarchy=bool
--階層的表示。デフォルトで有効。
-compact=bool
--リストのレベルを詰める。デフォルトで有効。[[使用例>#ac6...
-num=数字
--表示件数指定。正数は前からN件目、負数は後ろからN件目...
num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 ...
//((num=:10 と書くこともできる。num=10:1 も同義。)) ((num...
num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味...
//((num=5-2 で先頭5件目から、そこから2件前まで(3,4,5)の...
-depth=数字
--見出しレベル限定。数字の指定は num と同じ書式。include...
compact=on,off に関わらず絶対値指定。
-except=正規表現
--リストしない見出しを正規表現にて指定。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]]...
except=Test|sample → Test または sample を含む見出しを除...
-filter=正規表現
--リストする見出しを正規表現で限定する。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]]...
-link=on|off|anchor|page
--リンク形態指定。デフォルトは on。~
on は現在ページへは link=anchor、page オプションで別ペー...
anchor は強制的にアンカーのみ使用。~
page は強制的にページ名も含めたリンク。~
off はリンクしない。~
ヒント: link=anchor で include したページに対してもペー...
-page=ページ名
--見出しリストを行うページを指定。デフォルトはカレントペ...
-cache=on|off|reset
--キャッシュの利用。デフォルトで有効。reset でキャッシュ...
**動作例 [#ac62520e]
次のような「とあるページ」があったとします。
**AA
#contentsx
*B
***BBB
**BC
#include(別のページ)
*D
「別のページ」の内容は次のとおりだったとします。
*1
#contentsx
**11
「とあるページ」の #contetnsx が変更されると思ってくださ...
----
まず参考に #contents
#contents
-AA
-B
---BBB
--BC
-D
----
#contentsx のデフォルト動作
#contentsx // == #contentsx(include,fromhere,compact,hie...
-B
--BBB
--BC
-別のページ
--1
---11
-D
----
#contentsx(include=off,fromhere=off,compact=off,hierarch...
-AA
-B
-BBB
-BC
-D
----
#contentsx(include=off,fromhere=off,compact=off,hierarch...
--AA
-B
---BBB
--BC
-D
----
#contentsx(include=off,fromhere=off,compact) // compact
-AA (<-注目)
-B
--BBB (<-注目)
--BC
-D
完全に #contents と同じものはないが、compact としてはこの...
----
#contentsx(include=off,fromhere,compact=off) // fromhere
-B
---BBB
--BC
-D
----
#contentsx(include,fromhere=off,compact=off) // include
---AA
--B
---BBB (表現できない。もう1段下がる)
---BC
-別のページ
--1
---11
--D
include がある場合、全体的に1段階下がる。
----
#contentsx(depth=1:2,compact=false)
--B
---BC
--1
---11
--D
include が depth=0
----
#contentsx(depth=1:2) // compact
-B
--BC
-1
--11
-D
----
#contentsx(depth=1:2,filter=B)
-B
--BC
----
#contentsx(depth=1:2,except=B)
-1
--11
-D
----
#contentsx(depth=1:2,except=B,num=1:2)
-1
--11
----
#contentsx(page=別のページ)
-1
--11
*設定 [#kf58bbaf]
固定アンカ必須です。pukiwiki.ini.php で $fixed_heading_an...
PukiWiki Plus! の場合デフォルトで有効です。
固定アンカは編集保存する際に自動作成されます(見出しの横...
今まで設定していなかった場合、全てのページを編集保存しな...
replaceplugin.inc.php を使用して全ページの #contents を #...
*FAQ [#p59cd688]
** MenuBar に設置する場合? [#m73e2463]
MenuBar に設置する際は
#contentsx(fromhere=off)
のように記述しておきます((MenuBar でプラグインが起動され...
** #contents を一度に置き換えたい [#b249d091]
プラグインの置き換え用プラグインとして replaceplugin.inc....
** CSSデザイン [#y9cd53ae]
#contentsx は
<table border="0" class="toc"><tbody>
<tr><td class="toctitle">
<span>Table of Contents</span>
</td></tr>
<tr><td class="toclist">
<ul class="contentsx">
<li> ... </li>
<li> ... </li>
</ul>
</td></tr>
</tbody></table>
のようなタグを出力します(微妙にMediaWikiの真似)。クラス t...
このサイトでは以下のようにしています。
サイトのデザインは各々で違うと思いますので、参考までに。
#pre{{
/* contentsx */
div#body .toc {
font-size:13px;
border:2px solid gray;
background:white;
margin:0px 0px 0px 10px;
z-index: 2;
}
div#body .toc .toctitle {
text-align:center;
margin:0px 10px 0px 0px;
}
div#body .toc .toctitle span {
font-weight:bold;
margin:0px 5px 0px 5px;
}
div#body .toc .toclist ul{
margin:5px 5px 5px 20px;
}
div#body .toc .toclist ul ul{
margin-left:15px;
}
}}
Table of Contents の文字を消したい場合は
#pre{{
div#body .toc .toctitle {
display: none;
}
}}
とでもしてください。
ちなみに #lsx プラグインからの呼び出しの場合 <ul class="c...
*技術的詳細 [#f304f2df]
**キャッシュについて [#x2350f9e]
-1ページにつき1キャッシュです。
--cache/ページ名.contentsx のような形で保存されます。
-ページを毎回パースして見出しを見つける処理を短縮するため...
--最終出力HTMLをキャッシュしているわけではありません。
--最終出力HTMLをキャッシュしたい場合は ../ecache.inc.php ...
-ページ参照時に(プラグイン実行時に)キャッシュファイルと...
--Wiki ページではなく diff ファイルのタイムスタンプを見る...
-アクション型(?cmd=contentsx)で管理者ならばキャッシュのリ...
**固定アンカ必須 [#h5f88d82]
include オプション指定時に相対アンカに完全対応できないこ...
調査
+相対アンカ番号は convert_html が呼ばれた回数を利用して割...
+#contents は実際はプラグインではなく、本体組み込み機能で...
+#contents には include オプションはありません。#include ...
問題
+プラグインの側から $contents_id を取得する方法が用意され...
+$contents_id を取得できるように改造したとしても(global ...
考えた対策
+Wiki 文書をプラグイン側で独自にパースし、convert_html を...
この対策に対する問題
+全てのプラグインに対応することは不可能、特に新しく作られ...
//さらにこれには、対応したとしても #include されたページ...
結論
相対アンカの利用は無理。固定アンカを使用するしかない。
終了行:
**ページの目次を作成する #contents のプラグイン化、拡張 [...
#contentsx
*説明 [#b25f9fa6]
ページの目次を作成するプラグインです。
[[#contents>org:PukiWiki/1.4/Manual/Plugin/A-D#content_1_...
**本体組み込み #contents との違い [#k9cb86b6]
-設置行以降の見出しのみリストする機能
-MenuBar に設置しても有効
-見出しレベル指定機能
-表示件数指定機能
-正規表現による見出しのフィルタ機能
-正規表現による見出しの除外フィルタ機能
-キャッシュ機能
-リンク形態指定機能(リンクしないなど)
-固定アンカ必須
**旧 contents2_1からの変更点 [#m17ed6bb]
-固定アンカ必須
--pukiwiki.ini.php で $fixed_heading_anchor = 1;
-相対アンカのバグ
--プラグインという形で完全対応は不可能なことがわかってい...
-display 削除
--inline 却下
-depth=2-5 -> depth=2:5
--depth=-1:-5 (最後から、最後から5番目まで) が可能に
--depth=-1+5 なども可能
--depth=(1,3,5:9) のように複数指定も可能
-number -> num
--number=10 (10個) ではなく num=1:10 (depth と同じ書式)
-キャッシュ機能
-キャッシュリセット用のアクション型
-link オプション追加
-出力HTML
変更なし
-page
-fromhere
-hierarchy
-compact
-except
-filter
*書式 [#jcb5f796]
#contentsx(オプション)
option=bool なオプションは共通して、 option, option=true,...
-fromhere=bool
--#contentsx がある行以降の見出しのみをリストする。デフォ...
備考:page オプションで別ページを指定した場合は強制的に o...
-include=bool
--#include プラグインで取り込んでいるページとその見出しも...
デフォルトで有効。
-hierarchy=bool
--階層的表示。デフォルトで有効。
-compact=bool
--リストのレベルを詰める。デフォルトで有効。[[使用例>#ac6...
-num=数字
--表示件数指定。正数は前からN件目、負数は後ろからN件目...
num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 ...
//((num=:10 と書くこともできる。num=10:1 も同義。)) ((num...
num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味...
//((num=5-2 で先頭5件目から、そこから2件前まで(3,4,5)の...
-depth=数字
--見出しレベル限定。数字の指定は num と同じ書式。include...
compact=on,off に関わらず絶対値指定。
-except=正規表現
--リストしない見出しを正規表現にて指定。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]]...
except=Test|sample → Test または sample を含む見出しを除...
-filter=正規表現
--リストする見出しを正規表現で限定する。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]]...
-link=on|off|anchor|page
--リンク形態指定。デフォルトは on。~
on は現在ページへは link=anchor、page オプションで別ペー...
anchor は強制的にアンカーのみ使用。~
page は強制的にページ名も含めたリンク。~
off はリンクしない。~
ヒント: link=anchor で include したページに対してもペー...
-page=ページ名
--見出しリストを行うページを指定。デフォルトはカレントペ...
-cache=on|off|reset
--キャッシュの利用。デフォルトで有効。reset でキャッシュ...
**動作例 [#ac62520e]
次のような「とあるページ」があったとします。
**AA
#contentsx
*B
***BBB
**BC
#include(別のページ)
*D
「別のページ」の内容は次のとおりだったとします。
*1
#contentsx
**11
「とあるページ」の #contetnsx が変更されると思ってくださ...
----
まず参考に #contents
#contents
-AA
-B
---BBB
--BC
-D
----
#contentsx のデフォルト動作
#contentsx // == #contentsx(include,fromhere,compact,hie...
-B
--BBB
--BC
-別のページ
--1
---11
-D
----
#contentsx(include=off,fromhere=off,compact=off,hierarch...
-AA
-B
-BBB
-BC
-D
----
#contentsx(include=off,fromhere=off,compact=off,hierarch...
--AA
-B
---BBB
--BC
-D
----
#contentsx(include=off,fromhere=off,compact) // compact
-AA (<-注目)
-B
--BBB (<-注目)
--BC
-D
完全に #contents と同じものはないが、compact としてはこの...
----
#contentsx(include=off,fromhere,compact=off) // fromhere
-B
---BBB
--BC
-D
----
#contentsx(include,fromhere=off,compact=off) // include
---AA
--B
---BBB (表現できない。もう1段下がる)
---BC
-別のページ
--1
---11
--D
include がある場合、全体的に1段階下がる。
----
#contentsx(depth=1:2,compact=false)
--B
---BC
--1
---11
--D
include が depth=0
----
#contentsx(depth=1:2) // compact
-B
--BC
-1
--11
-D
----
#contentsx(depth=1:2,filter=B)
-B
--BC
----
#contentsx(depth=1:2,except=B)
-1
--11
-D
----
#contentsx(depth=1:2,except=B,num=1:2)
-1
--11
----
#contentsx(page=別のページ)
-1
--11
*設定 [#kf58bbaf]
固定アンカ必須です。pukiwiki.ini.php で $fixed_heading_an...
PukiWiki Plus! の場合デフォルトで有効です。
固定アンカは編集保存する際に自動作成されます(見出しの横...
今まで設定していなかった場合、全てのページを編集保存しな...
replaceplugin.inc.php を使用して全ページの #contents を #...
*FAQ [#p59cd688]
** MenuBar に設置する場合? [#m73e2463]
MenuBar に設置する際は
#contentsx(fromhere=off)
のように記述しておきます((MenuBar でプラグインが起動され...
** #contents を一度に置き換えたい [#b249d091]
プラグインの置き換え用プラグインとして replaceplugin.inc....
** CSSデザイン [#y9cd53ae]
#contentsx は
<table border="0" class="toc"><tbody>
<tr><td class="toctitle">
<span>Table of Contents</span>
</td></tr>
<tr><td class="toclist">
<ul class="contentsx">
<li> ... </li>
<li> ... </li>
</ul>
</td></tr>
</tbody></table>
のようなタグを出力します(微妙にMediaWikiの真似)。クラス t...
このサイトでは以下のようにしています。
サイトのデザインは各々で違うと思いますので、参考までに。
#pre{{
/* contentsx */
div#body .toc {
font-size:13px;
border:2px solid gray;
background:white;
margin:0px 0px 0px 10px;
z-index: 2;
}
div#body .toc .toctitle {
text-align:center;
margin:0px 10px 0px 0px;
}
div#body .toc .toctitle span {
font-weight:bold;
margin:0px 5px 0px 5px;
}
div#body .toc .toclist ul{
margin:5px 5px 5px 20px;
}
div#body .toc .toclist ul ul{
margin-left:15px;
}
}}
Table of Contents の文字を消したい場合は
#pre{{
div#body .toc .toctitle {
display: none;
}
}}
とでもしてください。
ちなみに #lsx プラグインからの呼び出しの場合 <ul class="c...
*技術的詳細 [#f304f2df]
**キャッシュについて [#x2350f9e]
-1ページにつき1キャッシュです。
--cache/ページ名.contentsx のような形で保存されます。
-ページを毎回パースして見出しを見つける処理を短縮するため...
--最終出力HTMLをキャッシュしているわけではありません。
--最終出力HTMLをキャッシュしたい場合は ../ecache.inc.php ...
-ページ参照時に(プラグイン実行時に)キャッシュファイルと...
--Wiki ページではなく diff ファイルのタイムスタンプを見る...
-アクション型(?cmd=contentsx)で管理者ならばキャッシュのリ...
**固定アンカ必須 [#h5f88d82]
include オプション指定時に相対アンカに完全対応できないこ...
調査
+相対アンカ番号は convert_html が呼ばれた回数を利用して割...
+#contents は実際はプラグインではなく、本体組み込み機能で...
+#contents には include オプションはありません。#include ...
問題
+プラグインの側から $contents_id を取得する方法が用意され...
+$contents_id を取得できるように改造したとしても(global ...
考えた対策
+Wiki 文書をプラグイン側で独自にパースし、convert_html を...
この対策に対する問題
+全てのプラグインに対応することは不可能、特に新しく作られ...
//さらにこれには、対応したとしても #include されたページ...
結論
相対アンカの利用は無理。固定アンカを使用するしかない。
ページ名: