* 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. |
PukiWiki/1.4/マニュアル/プラグイン/独自に追加したもの/contentsxページの目次を作成する #contents のプラグイン化、拡張
説明ページの目次を作成するプラグインです。 #contents プラグインは実際のところプラグインではなく、本体組み込みの機能であり、拡張がしにくいのでプラグイン化し、機能拡張しました。 本体組み込み #contents との違い
旧 contents2_1からの変更点
変更なし
書式#contentsx(オプション) option=bool なオプションは共通して、 option, option=true, option=on でそのオプションが有効になり、option=false, option=off で無効になります。
動作例次のような「とあるページ」があったとします。 **AA #contentsx *B ***BBB **BC #include(別のページ) *D 「別のページ」の内容は次のとおりだったとします。 *1 #contentsx **11 「とあるページ」の #contetnsx が変更されると思ってください。 まず参考に #contents #contents
#contentsx のデフォルト動作 #contentsx // == #contentsx(include,fromhere,compact,hierarchy)
#contentsx(include=off,fromhere=off,compact=off,hierarchy=off)
#contentsx(include=off,fromhere=off,compact=off,hierarchy) // 以下 hierarchy 略
#contentsx(include=off,fromhere=off,compact) // compact
完全に #contents と同じものはないが、compact としてはこの挙動が正解だと思っている(#contents の場合は先頭要素だけが compact されている)。 #contentsx(include=off,fromhere,compact=off) // fromhere
#contentsx(include,fromhere=off,compact=off) // include
include がある場合、全体的に1段階下がる。 #contentsx(depth=1:2,compact=false)
include が depth=0 #contentsx(depth=1:2) // compact
#contentsx(depth=1:2,filter=B)
#contentsx(depth=1:2,except=B)
#contentsx(depth=1:2,except=B,num=1:2)
#contentsx(page=別のページ)
設定固定アンカ必須です。pukiwiki.ini.php で $fixed_heading_anchor = 1; と設定します。 PukiWiki Plus! の場合デフォルトで有効です。 固定アンカは編集保存する際に自動作成されます(見出しの横に [#kf58bbaf] のようなものが作成されます)。 今まで設定していなかった場合、全てのページを編集保存しなおす必要があります。 replaceplugin.inc.php を使用して全ページの #contents を #contentsx に変換する処理を行うと編集保存もすることになりアンカーを作成してくれるので一石二鳥かもしれません。 FAQMenuBar に設置する場合?MenuBar に設置する際は #contentsx(fromhere=off) のように記述しておきます*1。 #contents を一度に置き換えたいプラグインの置き換え用プラグインとして replaceplugin.inc.php を作成してありますので利用してみてください。 CSSデザイン#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 を利用します。 このサイトでは以下のようにしています。 サイトのデザインは各々で違うと思いますので、参考までに。 /* 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 の文字を消したい場合は div#body .toc .toctitle { display: none; } とでもしてください。 ちなみに #lsx プラグインからの呼び出しの場合 <ul class="contentsx">....</ul> の部分のみが出力されます。toc, toctitle, toclist は #contentsx 単体呼び出し用と考えて使用できます。 技術的詳細キャッシュについて
固定アンカ必須include オプション指定時に相対アンカに完全対応できないことがわかっています。 調査
問題
考えた対策
この対策に対する問題
結論 相対アンカの利用は無理。固定アンカを使用するしかない。 |