**見出し番号をx.x.x形式で出力する [#o21d6d68]
|RIGHT:70|LEFT:410|c
|~バージョン|全部|
|~投稿者|[[pooh]]|
|~状態|提案|
|~投稿日|&new{2008-10-09 (木) 19:09:34};|
***メッセージ [#oc17386e]
見出し番号を下記、

1
1.1
1.1.1
1.2
1.1.2 
1.1.3

のように表示できるプラグインがほしいです。
「[[number プラグイン>自作プラグイン/number.inc.php]]」で箇条書き「-,--」には対応していますが、見出し「*,**」に対応されていません。



 
***コメント [#b62f7ebd]
- 私も同じようなプラグイン希望です。&br;見出しでnumberプラグインが使えないので、numberを改造して無理やり使ってます。&br;要望どおり「*,**」の見出しでもうまく機能して勝手にカウントアップしないようになりましたが、wikiソース記述は見苦しい状態です。(改造部分のPHPのソースもきれいではありませんが・・・)&br;&br;もっと使いやすいプラグインがあればと思っておりました。 -- [[boo]] &new{2008-10-10 (金) 09:20:40};
- ほしい!!! --  &new{2008-10-12 (日) 13:06:15};
- ↑の「ほしい」は拙作の「改造版numberプラグイン」のリクエストでしょうか?&br;かなり行き当たりばったり的に改造したのでここにアップするのも気が引けます。&br;ちなみに、wikiの記述イメージは、number()の第1引数の先頭に「+」を付け加えるとカウントアップのみ。「-」を付けるとカウントアップしない。「+」でも「-」でもない場合は今までと互換動作。というものです。&br;なので、見出し「*,**」などで使うには、その前の行でカウントアップのみ実行し、見出し行ではカウントアップしないという使い方で記述します。&br;とりあえずこの仕様でcontentsプラグインがあっても期待通りの動作をしています。 -- [[boo]] &new{2008-10-14 (火) 14:14:59};
- この見出しプラグイン良いですね。どなたか作ってほしい・・・。 --  &new{2008-10-23 (木) 19:42:02};
- やっつけ気味ですが・・・ --  &new{2008-10-26 (日) 02:55:06};
 <?php
 define(PLUGIN_CHAPTER_MAX_DEPTH,10);
 define(PLUGIN_CHAPTER_SEPARATOR,'.');
 
 function plugin_chapter_inline()
 {
 	static $counter = array();
 	global $vars;
 	
 	foreach(debug_backtrace() as $r) if($r["function"] == "make_heading") return false;
 	
 	$args = func_get_args();
 	array_pop($args);
 	$div = (is_null($args[1])) ? '' : $args[1];
 	$depth = ($args[0] == "" || is_null($args[0])) ? 1 : intval($args[0]);
 	$depth = (is_null($args[0]) || $args[0] == "") ? 1 : intval($args[0]);
 	if(is_null($counter[$vars['page']][$div])){
 		$counter[$vars['page']][$div]['count'] = array_fill(1, PLUGIN_CHAPTER_MAX_DEPTH, 0);
 		$counter[$vars['page']][$div]['last_depth'] = 1;
 	}
 	if($depth <= 0 || $depth > PLUGIN_CHAPTER_MAX_DEPTH)
 		return '<strong>(chapter: "<em>'. htmlspecialchars($args[0]) .'</em>" wrong parameter)</strong>';
 	
 	if($depth < $counter[$vars['page']][$div]['last_depth'])
 		for($i=$depth+1;$i<=PLUGIN_CHAPTER_MAX_DEPTH;$i++) $counter[$vars['page']][$div]['count'][$i] = 0;
 	$counter[$vars['page']][$div]['count'][$depth]++;
 	$numstr = implode(PLUGIN_CHAPTER_SEPARATOR,array_slice($counter[$vars['page']][$div]['count'], 0, $depth));
 	
 	$counter[$vars['page']][$div]['last_depth'] = $depth;
 	return $numstr;
 }
 ?>
上記ソースをchapter.inc.phpという名前でpluginフォルダに保存・アップロードし、&amp;chapter(['''depth''',['''division''']]);みたいな感じで使ってください。(number.inc.phpとはパラメータの順番が逆になっています)
- ありがたく使わせていただきます_(__)_ --  &new{2008-11-19 (水) 21:33:58};

- chapterプラグインを改造して#contentsでも表示できるようにして使わせてもらってます。chapterの作者に感謝。 -- [[koh]] &new{2009-02-07 (土) 02:39:47};
- 大変便利だと思います。#contentsで表示できるようにはどうすればよいのでしょうか? --  &new{2009-02-17 (火) 14:38:48};
- こんな修正をしてます。ページに添付できないようなので、はりつけときますね。 -- [[koh]] &new{2009-03-05 (木) 01:53:10};
-- 大変便利だと思います。#contentsで表示できるようにはどうすればよいのでしょうか? --  &new{2009-02-17 (火) 14:38:48};
-- こんな修正をしてます。ページに添付できないようなので、はりつけときますね。 -- [[koh]] &new{2009-03-05 (木) 01:53:10};
 --- chapter.inc.php-orig        2009-02-07 01:26:59.000000000 +0900
 +++ chapter.inc.php     2009-02-07 01:59:53.000000000 +0900
 @@ -7,14 +7,16 @@
         static $counter = array();
         global $vars;
 
 -       foreach(debug_backtrace() as $r) if($r["function"] == "make_heading") return false;
 -
 +       $make_heading = false;
 +       foreach(debug_backtrace() as $r) if($r["function"] == "make_heading") $make_heading = true;
 +
         $args = func_get_args();
         array_pop($args);
         $div = (is_null($args[1])) ? '' : $args[1];
         $depth = ($args[0] == "" || is_null($args[0])) ? 1 : intval($args[0]);
         if(is_null($counter[$vars['page']][$div])){
                 $counter[$vars['page']][$div]['count'] = array_fill(1, PLUGIN_CHAPTER_MAX_DEPTH, 0);
 +               $counter[$vars['page']][$div]['mh'] = array_fill(1, PLUGIN_CHAPTER_MAX_DEPTH, false);
                 $counter[$vars['page']][$div]['last_depth'] = 1;
         }
         if($depth <= 0 || $depth > PLUGIN_CHAPTER_MAX_DEPTH)
 @@ -22,7 +24,9 @@
 
         if($depth < $counter[$vars['page']][$div]['last_depth'])
                 for($i=$depth+1;$i<=PLUGIN_CHAPTER_MAX_DEPTH;$i++) $counter[$vars['page']][$div]['count'][$i] = 0;
 -       $counter[$vars['page']][$div]['count'][$depth]++;
 +       if (!$counter[$vars['page']][$div]['mh'][$depth])
 +               $counter[$vars['page']][$div]['count'][$depth]++;
 +       $counter[$vars['page']][$div]['mh'][$depth] = $make_heading;
         $numstr = implode(PLUGIN_CHAPTER_SEPARATOR,array_slice($counter[$vars['page']][$div]['count'], 0, $depth));
 
         $counter[$vars['page']][$div]['last_depth'] = $depth;
あまりテストしてませんが、大丈夫ではないかと。。。

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.130 sec.

OSDN