totalpages.inc.php

名称ページ数表示プラグイン
ファイルtotalpages.inc.php
バージョン1.01
対象サーバーPukiWiki 1.5.3 / PHP 7.4 / UTF-8
対象ブラウザーFirefox, Chrome, Safari, Edge 各最新版
ライセンスGPLv3

ウィキ内のページ数を数えて出力するPukiWiki用プラグイン。

インストール

totalpages.inc.php
4.6KB | 2020-05-19

totalpages.inc.phpPukiWikipluginディレクトリに配置してください。

使い方

&totalpages([pagePrefix]);

pagePrefix … この文字列から始まる名前のページだけを数える。省略すると全ページ

使用例

このウィキには&totalpages();本の記事があります。

このウィキには33本の記事があります。

PukiWikiに関する記事は&totalpages(PukiWiki/);本です。

PukiWikiに関する記事は28本です。

設定

コード内の下記の定数で動作を制御することができます。

定数名既定値意味
PLUGIN_TOTALPAGES_PAGE_ALLOW文字列カウント対象ページ名を表す正規表現
PLUGIN_TOTALPAGES_PAGE_DISALLOW文字列'^(Pukiwiki\/.*)$'カウント除外ページ名を表す正規表現
PLUGIN_TOTALPAGES_NUMBERFORMAT0 or 11ページ数を3桁カンマ区切りで表示する

処理の詳細

数えるのは次のすべての条件で絞り込まれたページです。特殊なページを省くなど、ご自分のウィキを厳密に数えたいかたは条件を調整してください。正規表現の知識が必要です。

  1. RecentChangesページを除外する
  2. pukiwiki.ini.php 内 $non_list で指定されたページを除外する
  3. PLUGIN_TOTALPAGES_PAGE_ALLOW定数が空でなければ、それが表すページのみを対象とする
  4. PLUGIN_TOTALPAGES_PAGE_DISALLOW定数が空でなければ、それが表すページを除外する(デフォルトでは「Pukiwiki/」から始まるページを除外)
  5. 引数が空でなければ、その文字列から始まるページのみを対象とする
  6. 閲覧不可のページを除外する

数えたページ数は専用のキャッシュファイル cache/totalpages[.*].dat に保存し、次回から処理を省略します。cache/recent.dat のタイムスタンプを参照し、ページの編集・増減を検知したら数え直します。もしプラグイン内の定数やコードを書き換えて条件を変更したら、キャッシュファイル cache/totalpages[.*].dat を削除するか適当なページを編集して強制的に数え直させてください。

謝辞

次のプラグインを参考にし、コードを一部流用させていただきました。

rss.inc.php : Copyright 2003-2017 PukiWiki Development Team, License: GPL v2 or (at your option) any later version

default.ini.phpへの設定

本プラグインの定数設定(ファイル内の下記のような行)は、PukiWikiルートディレクトリにある標準設定ファイルdefault.ini.phpにも記述することができます。本プラグインの定数設定行をdefault.ini.phpの末尾にそのままコピーしてください。default.ini.php側の設定値が優先されます。

/////////////////////////////////////////////////
// ○○プラグイン設定(○○.inc.php)
if (!defined('PLUGIN_○○_×××)) define('PLUGIN_○○_×××', △);

設定をdefault.ini.phpに記述することで、プラグインをアップデート(ファイル上書き)するたびに値を書き直す必要がなくなります。また、設定がdefault.ini.phpに集中することで、運用中の設定管理も楽になります。

凡例

プラグインの引数は下記の書式で表現しています。

  • [] … 省略でき必要に応じて記述します
  • | … |で区切られた項目のうち1つを記述します
  • {} … 中カッコ内の引数は任意の順序で記述できます