見出し一覧(目次)に表示する見出しの階層数を制限できる自作プラグイン「contents2」

 #contents([階層数])
  • [階層数]に1〜3の階層数を指定することで,ページの見出し一覧に表示する見出しの階層を1や2に制限することができる。
  • 「#contents」プラグインでは,1〜5階層までの見出しが無条件にリストされるので,小見出しが多いコンテンツの場合,目次が冗長になってページのレイアウトが損なわれる。これの解決を企図したもの。

プログラムの変更点

  • contents.inc.plをベースに,受け取りパラメータを,ページ名から階層数(変数「$kaiso」)に変更し,
  • 以下のように,見出し一覧に掲載する階層の見出し行(1個〜指定個数個の「*」で始まる行)を抽出して,ジャンプする先の見出しの通し番号を付したURLをリンク設定した一覧を作成し,
 		if (/^(\*{1,$kaiso})([^\*]+)$/) {
 			&back_push('ul', length($1), \@tocsaved, \@tocresult);
          ・・・・・・・・・・
 				. qq(#$nametag$tocnum2">$title</a></li>\n));
 #			$tocnum2++;
		}
  • ただし,ページ内の各見出しの通し番号は,ページデータのHTML化ルーチンで全階層の見出しに対して設定されているため,この通し番号は,以下のとおり見出しの全階層についてカウントするようにして完成。
 		if (/^(\*{1,5})(.+)/) {
 			$tocnum2++;
 		}
  • なお,「contents」プラグインにこの階層選択機能をつける方が,いたずらにプラグイン数を増やさないのでbetterと思いますが,ページ名を指定する機能を残したまま階層指定機能も入れると,パラメータがページ名なのか階層数なのかを判別する必要が生じて面倒なので,とりあえず別のプラグインにしました。

Counter: 1445, today: 3, yesterday: 1


Last-modified: 2015-11-23