ページの作成日時、編集日時を表示する

ページの作成日時は、「now?」や「&now;」などで挿入できる。ただしこれはページ作成時に置換されるため、自動テンプレートで作成したページには使用できない。(テンプレートに対応した方法が「pukiwiki:質問箱/181」で紹介されているが、どうなんだろうか...。)

また更新日時はlastmodifiedプラグインで可能だが、これではcommentプラグインなどで書き込まれたときも日時を更新してしまう。

ここでは純粋にページを更新した日時を表示する方法と、ページを作成した日時を表示する方法を考える。

まず、「default.ini.php」の$line_rulesに

'\/\*.*?\*\/'	=>	'',

を追加する。これで/* */で囲まれた部分が表示されなくなる。(何も表示しないプラグインを使うなど、別の方法でもよい。)

次に「rules.ini.php」の$str_rulesの設定の後に次のようなコードを加える。

if (($vars['cmd'] == 'edit'
 || $vars['plugin'] == 'edit'
 || $vars['plugin'] == 'paraedit'
 || $vars['plugin'] == 'tracker')
 && (!isset($vars['notimestamp']) || $vars['notimestamp'] == ''))
{
 $str_rules['\/\* lastedited_date start \*\/.*?\/\* lastedited_date end \*\/'] =
  '/* lastedited_date start */' . format_date(UTIME) . '/* lastedited_date end */';
 if (!is_page($vars['page']))
 {
  $str_rules['\/\* created_date start \*\/.*?\/\* created_date end \*\/'] =
   '/* created_date start */' . format_date(UTIME) . '/* created_date end */';
 }
}

ここでは、edit、paraedit、trackerプラグインが呼び出された時のみ、$str_rulesにルールを追加している。また、指定されたページが存在しない場合に、作成日時を挿入するルールを追加している。

更新した日時と作成した日時を表示する場所に次のような記述をすれば、そこに表示されるようになる。

ページを作成した日時:/* created_date start */ /* created_date end */
ページを最後に編集した日時:/* lastedited_date start */ /* lastedited_date end */

ページ情報
[ トップ ]   [ 編集 | 凍結 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]