contentsxプラグイン の変更点
Top > contentsxプラグイン
- 追加された行はこの色です。
- 削除された行はこの色です。
- contentsxプラグイン へ行く。
*概要 [#y5695158] ページの目次を作成する #contents のプラグイン化、拡張 **本体組み込み #contents との違い [#xf34b3f4] -設置行以降の見出しのみリストする機能 -MenuBar に設置しても有効 -見出しレベル指定機能 -表示件数指定機能 -正規表現による見出しのフィルタ機能 -正規表現による見出しの除外フィルタ機能 -キャッシュ機能 -リンク形態指定機能(リンクしないなど) -固定アンカ必須 *使い方 [#h482fea2] 固定アンカ必須です。pukiwiki.ini.php で $fixed_heading_anchor = 1; と設定します。 PukiWiki Plus! の場合デフォルトで有効です。 固定アンカは編集保存する際に自動作成されます。 今まで設定していなかった場合、全てのページを編集保存しなおす必要があります。 **書式 [#neae4d12] #contentsx(オプション) option=bool なオプションは共通して、 option, option=true, option=on でそのオプションが有効になり、option=false, option=off で無効になります。 ***page=ページ名 [#f2bee01e] 見出しリストを行うページを指定できる。デフォルトはカレントページ。 ***fromhere=bool [#e78d19e0] #contentsx がある行以降の見出しのみをリストする。デフォルトで有効。 備考:page オプションで別ページを指定した場合は強制的に off になります。 ***hierarchy=bool [#r167c6bc] 階層的表示。デフォルトで有効。 ***compact=bool [#y45222f6] リストのレベルを詰める。デフォルトで有効。気になる場合は使用例参照のこと。 ***num=数字 [#j130988a] 表示件数指定。正数は前からN件目、負数は後ろからN件目の意味。 num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 で後ろ10件目から後ろ1件目までの意味。num=2: で先頭2件目から最後までの意味。 num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味。 ***depth=数字 [#t6ce90b2] 見出しレベル限定。数字の指定は num と同じ書式。 includeページタイトルはレベル0になる。compact=on,off に関わらず絶対値指定。 ***except=正規表現 [#h19de4f9] リストしない見出しを正規表現にて指定。 ヒント: ereg で判定を行います。 except=Test|sample → Test または sample を含む見出しを除く。 filter=正規表現 リストする見出しを正規表現で限定する。 ヒント: ereg で判定を行います。 ***include=bool [#xcedd776] #include プラグインで取り込んでいるページとその見出しも扱う。 デフォルトで有効。 ***cache=on | off [#tda9731e] キャッシュの利用。デフォルトで有効。 link=on | off | anchor | page リンク形態指定。デフォルトは on。 on - 柔軟に、現在ページへは link=anchor、page オプションで別ページが指定されていた場合 link=page。 anchor - 強制的にアンカーのみ使用。 page - 強制的にページ名も含めたリンク。 off - リンクしない。 ヒント: link=anchor で include したページに対してもページ内アンカーによるリンクを貼れます。include にはもともと対応していますが、類似のものにも対応できると思います。link=page はついでです。 *動作例(仕様) [#ycf25583] 次のような「とあるページ」があったとします。 **AA #contentsx *B ***BBB **BC #include(別のページ) *D 「別のページ」の内容は次のとおりだったとします。 *1 #contentsx **11 「とあるページ」の #contetnsx が変更されると思ってください。 まず参考に #contents #contents 出力) AA B BBB BC D #hr #contentsx //デフォルト動作 == #contentsx(include,fromhere,compact,hierarchy) 出力) B BBB BC 別のページ 1 11 D #hr #contentsx(include=off,fromhere=off,compact=off,hierarchy=off) 出力) AA B BBB BC D #hr #contentsx(include=off,fromhere=off,compact=off,hierarchy) // 以下 hierarchy 略 出力) AA B BBB BC D #hr #contentsx(include=off,fromhere=off,compact) // compact 出力) AA (<-注目) B BBB (<-注目) BC D 完全に #contents と同じものはないが、compact としてはこの挙動が正解だと思っている(#contents の場合は先頭要素だけが compact されている)。 #hr #contentsx(include=off,fromhere,compact=off) // fromhere 出力) B BBB BC D #hr #contentsx(include,fromhere=off,compact=off) // include 出力) AA B BBB (表現できない。もう1段下がる) BC 別のページ 1 11 D include がある場合、全体的に1段階下がる。 #hr #contentsx(depth=1:2,compact=false) 出力) B BC 1 11 D include が depth=0 #hr #contentsx(depth=1:2) // compact 出力) B BC 1 11 D #hr #contentsx(depth=1:2,filter=B) 出力) B BC #hr #contentsx(depth=1:2,except=B) 出力) 1 11 D #hr #contentsx(depth=1:2,except=B,num=1:2) 出力) 1 11 #hr #contentsx(page=別のページ) 出力) 1 11 *FAQ [#d68d5ad4] **MenuBar に設置する場合? [#z92616a4] MenuBar に設置する際は #contentsx(fromhere=off) のように記述しておきます*1。 **CSSデザイン [#yb25d555] #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の真似)。クラス toc、toctitle、toclist を利用します。 このサイトでは以下のようにしています。 サイトのデザインは各々で違うと思いますので、参考までに。 Table of Contents の文字を消したい場合は div#body .toc .toctitle { display: none; } ちなみに #lsx プラグインからの呼び出しの場合 <ul class="contentsx">....</ul> の部分のみが出力されます。toc, toctitle, toclist は #contentsx 単体呼び出し用と考えて使用できます。 キャッシュについて 1ページにつき1キャッシュです。 cache/ページ名.toc のような形で保存されます。 ページを毎回パースして見出しを見つける処理を短縮するためのキャッシュです。そこの計算量が多すぎなのです。 最終出力HTMLをキャッシュしているわけではありません。 最終出力HTMLをキャッシュしたい場合は ecache.inc.php を使用してください(更新タイミングは contentsx と同じです) ページ参照時に(プラグイン実行時に)キャッシュファイルとdiffファイルのタイムスタンプを比べて、Wikiページのほうが新しければ更新します。 Wiki ページではなく diff ファイルのタイムスタンプを見ることによって「タイムスタンプを更新しない」編集でもキャッシュを最新に保つことができます。 アクション型(?cmd=contentsx)で管理者ならばキャッシュのリセットができます。 *当プラグインについて [#oeb31f90] このプラグインは[[sonots>http://pukiwiki.sonots.com]]様の[[lsx.inc.php>http://pukiwiki.sonots.com/index.php?Plugin%2Fcontentsx.inc.php]]を使用しています。