contents2_1.inc.php

サマリ#contents のプラグイン化、そして拡張
リビジョン1.0
対応バージョン1.4.x
投稿者sonots
投稿日2005-02-07 (月) 14:01:14

説明

sonots:contents2_1.inc.php に引っ越しました。フルスクラッチから書き直したsonots:contentsx.inc.php が最新版です。


contents プラグインは実際のところプラグインではなく、本体組み込みの機能です。 拡張がしにくいのでプラグイン化しました。 アイデアの多くは自作プラグイン/ls2_1.inc.phpからきています。ということで名前はcontents2_1 です。

#contents をおいた位置より上の見出しが表示されても無駄だなと思っていた人が使うかもしれません。例えばこのページだと上の contents2_1.inc.php のリンクがいらない、と。

MenuBar に

#contents2_1(fromhere=false,hierarchy=false)

としておくのも便利かもしれません。hierarchy はお好みで。

関連

(欲しいプラグイン/170)(欲しいプラグイン/91)(続・質問箱/221)(続・質問箱/220)(質問箱/287)(欲しいプラグイン/125)(dev:BugTrack/617) (質問箱/59)(続・質問箱/447)(続・質問箱/306)

既知の問題点

問題1.include オプションを完全にはできないことが発覚しました。アンカー番号は convert_html が呼ばれた回数が振られるのですが、#contents2_1 が数えているのは結局のところ #include の数にしかすぎません。 つまり、convert_html を呼ぶ include 以外のプラグインが呼ばれるときっとずれます。

問題2.#include でとりこまれたページで表示される #contents2_1 のアンカーリンクの番号がまた1からはじまりうまくいきません。これは痛いです。

考察1.convert_html 中の static $contents_id を global にしたらどうかと考えてみましたが、だめです。

考察2.plugin_contents2_1_convert を convert_html が呼んだときに引数で $contents_id を渡す ことができたらどうかと考えてみましたが、そのように convert_html を改造できたとしても、問題2は直せますが問題1は変わりません。
ちなみに本体組み込み #contents は convert_html が $contents_id を渡しているこのような形です。include オプションがないのでこれ以上は悩む必要がないのです。
問題2のためにやりたいところですが、はてさて・・・。

考察3.とりあえず固定アンカーで逃げる。現在の pukiwiki はデフォルトで $fixed_heading_anchor = 1; のようなので全然ありみたいですね。

現状解.固定アンカーで逃げています。とりあえず解決

書式

#contents2_1([オプション])
&contents2_1([オプション]);

インライン型プラグイン時は強制的に display=inline となります。

オプション

ダウンロード

拡張子の番号をはずして、plugin ディレクトリに放りこんでください。

リビジョン日付変更点
filev1.1303/05/2005include ページタイトルに対するアンカーが固定なアンカーになるように変更。自作プラグイン/include2.inc.phpの最新版が対応しているので include にはそちらを利用してください。これに伴い改造include.inc.phpは表面上消しました。
filev1.1203/04/2005自作プラグイン/include2.inc.phpの対応を受けて対応。#include, #include2 共に認識します。
filev1.1102/26/2005既知の問題点を固定アンカーで回避。display=inline 時の区切り文字等をオプションでも設定できるようにした。
filev1.1002/18/2005要望をうけてリストではなく横一列に表示する機能を追加。それをうけて hierarchy=true,false オプションは display=hierarchy,flat となり、今回の追加機能は display=inline と指定することになりました。depth オプション指定時のレベルを変更。include ページ名がレベル0、見出しはレベル1以降とたぶんわかりやすくなりました。インライン型プラグインとして実行可能に。ただし強制的に display=inline です。CSSで設定しやすいようにHTMLにクラス名を追加。ソースコードの整理。
filev1.0902/14/2005typo が原因で depth オプションが正しく動いていなかったので修正
filev1.0702/08/2005pageオプション使用時でもリンクにアンカーしか使用していなかったので修正
filev1.0602/08/2005v1.05の修正でv1.04時に修正したはずの症状がまたでていたので修正
filev1.0502/08/2005今度は再帰 include のときのアンカーの処理が間違っていたので修正
filev1.0402/08/2005別のところでまたアンカー付けの処理が間違っていたので修正
filev1.0302/08/2005アンカー付けの処理が間違っていたので修正
filev1.0202/06/2005page オプションを指定した場合 fromhere オプションが発動しないようにした。
filev1.0102/06/2005初版

もっと便利に - include2.inc.php

include プラグインは現状ではページタイトルの見出しにアンカーをつけてくれないので、 ジャンプできません。

自作プラグイン/include2.inc.php は #contetns2_1 のアンカーリンクに対応しているのでそちらを利用するとページタイトルへジャンプできるようになります。

使用例

次のような「とあるページ」があったとします。

**AA
#contents2_1
*B
***BBB
**CC
#include(別のページ)
*D

「別のページ」の内容は次のとおりだったとします。

*1
#contents2_1
**11

「とあるページ」の #contetns2_1 が変更されると思ってください。


#contents2_1

#contents2_1(fromhere=false)

MenuBar に設定する場合は fromhere=false を用いることになるでしょう。


#contents2_1(page=別のページ)

#contents2_1(compact=false)
#contents2_1(compact=false,include=false)

#contents2_1(compact=false,depth=1-2)
#contents2_1(compact=true,depth=1-2)
#contents2_1(compact=false,depth=1-2,include=false)

#contents2_1(display=flat)

#contents2_1(display=inline,depth=1)

[ B | 1 | D ]


#contents2_1(number=5)

#contents2_1(except=B)

#contents2_1(include=false)

コメント

バグ、リクエストなどがあったら教えてください。リクエストは詳細な仕様も書いてくれたりするとうれしいです。


*1 \d+ は正規表現による表記です。例えば \d は数字のことです。
*2 \d*[-+]?\d* は正規表現による表記です。\d は数字のことです。
*3 PukiWikiの設計上、解決できるとしてもきっとめんどくさすぎる

添付ファイル: filecontents2_1.inc.php.13 3843件 [詳細] fileinclude.inc.php.1.diff 1201件 [詳細] fileinclude.inc.php.2.diff 1336件 [詳細] fileinclude.inc.php.2 1065件 [詳細] filecontents2_1.inc.php.12 2483件 [詳細] filecontents2_1.inc.php.11 2558件 [詳細] filecontents2_1.inc.php.10 2549件 [詳細] filecontents2_1.inc.php.10.alpha 2320件 [詳細] filecontents2_1.inc.php.9 2365件 [詳細] filecontents2_1.inc.php.8 1099件 [詳細] filecontents2_1.inc.php.7 2353件 [詳細] filecontents2_1.inc.php.6 2365件 [詳細] fileinclude.inc.php.1 1087件 [詳細] filecontents2_1.inc.php.5 2376件 [詳細] filecontents2_1.inc.php.4 2511件 [詳細] filecontents2_1.inc.php.3 2423件 [詳細] filecontents2_1.inc.php.2 2523件 [詳細] filecontents2_1.inc.php.1 2620件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 1.860 sec.

SourceForge