**指定した階層のページ数をカウントするプラグイン [#had96af4]
|RIGHT:70|LEFT:410|c
|~バージョン|1.4.7|
|~投稿者|[[あき]]|
|~状態|完了|
|~投稿日|&new{2009-01-27 (火) 12:47:34};|
***メッセージ [#zf8c3541]
ある階層のページ数をカウントし、その合計数を表示することのできるプラグインはありますでしょうか?~
例えば以下のようなページがあって、4階層目を指定すると「6」と表示されるような感じです。~
 ~
用語/A~C/A/aa~
用語/A~C/A/ab~
用語/A~C/B~
用語/A~C/C/c~
用語/D~F/D/da~
用語/D~F/D/de~
用語/D~F/E~
用語/D~F/F/fab~

 
***コメント [#h15516d6]
- 全ページの特定階層なのか、それともX階層目までを固定(例えば、1階層目が''用語''のページのみと)してから特定階層を数えるのかで、実行時のコストが変わりそう。少なくても、カウント1回実行で[[list プラグイン>PukiWiki/1.4/Manual/Plugin/L-N#l9a47a57]]を1回実行するぐらいの時間を消費するのは、覚悟する必要がある。((設計しだいですが、1つのページで何十回もプラグインを使うのは厳しそう)) --  &new{2009-01-27 (火) 18:03:28};
- 「X階層目までを固定」を想定しています。 -- [[あき]] &new{2009-01-29 (木) 05:06:05};
- 名前と階層が条件に合うページの数を数える程度の処理をどう実装した所でそうそう重くはなりそうにない((実際はどう造っても高負荷が回避できません。これはwiki本体に保持されたページ名一覧がなく、get関数が使われる度に保存ファイル全て(=全ページ)をスキャンしている為です。))と思いますが・・・。というわけで作りました。
- 名前と階層が条件に合うページの数を数える程度の処理をどう実装した所でそうそう重くはなりそうにない((実際はどう造っても高負荷が回避できません。これはwiki本体に保持されたページ名一覧がなく、get関数が使われる度に保存ファイル全て(=全ページ)をスキャンしている為です。 --  &new{2011-01-14 (金) 11:21:57}; ))と思いますが・・・。というわけで作りました。
 <?php
 function plugin_pagecount_inline()
 {
 	if(func_num_args() > 2) list($prefix, $depth) = func_get_args();
 	else return ' pagecount usage:&amp;pagecount(<em>prefix</em>,<em>depth</em>); ';
 	if(!is_numeric($depth) || $depth <= 0)  return ' pagecount error: Invalid <em>depth</em> value.';
 	
 	$all = ($prefix == '');
 	$depth--;
 	$count = 0;
 	foreach (get_existpages() as $page)
 		if($all || strpos($page,$prefix) === 0)
 			if(substr_count($page,'/') == $depth) $count++;
 	return $count;
 }
 ?>
使い方は&amp;pagecount('''カウント対象ページ名の頭''','''カウント対象階層''');のような感じで、上の例なら「&amp;pagecount(用語/,4);」のように書いてやれば「6」と出力されると思います。適当に作ったので問題があったらすみません。 --  &new{2009-01-31 (土) 03:23:45};

- [[欲しいプラグイン/385]] --  &new{2011-01-06 (木) 18:07:24};

//#comment

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.064 sec.

OSDN