カテゴリ | |
---|---|
サマリ | ページの更新日時を表示する&_now;などを使うには? |
バージョン | 1.4rc3 |
投稿者 | sha |
状態 | 完了 |
投稿日 | 2003-07-14 (MON) 20:43:49 |
ページの更新日付を表示する&_now; や &_date;, &_time; が使えるとどこかで見た覚えがあります。でも検索しても見つけることができません。しかも、確かに、ここの「練習用ページ」で動作確認することができますが、「PukiWiki 1.4」の練習ページでは動作確認することができません。どうしたら(どんなプラグインを使えば)使えるようになるでしょうか?
このコメントを入力する前は、上の「←ページ更新日時が出る」のところの表記は、2003-07-14 (MON) 20:46:22 だった。
これをtracker.inc.phpの「:config/plugin/tracker/~/page」にて、[_date]の代わりに使ってみたいと思っています。
うちも1.4rc3を使ってますが、&nowなどが使えません
あ”、うちでも&now;が使えてませんでした。でも、now?が使えてました。pukiwiki.ini.phpのユーザ定義のところで最初から定義されていました。でも、これは日付の文字列に展開されてしまうので、ページを更新しても日付文字列が更新されることはありません。
now?と書くと→2003-07-14 (MON) 22:25:54
私は、トップで新着情報の書き込み日時で使いたかったので、now?が逆に合っているような気がしてきました。
でも、&_nowを使うこともありそうなので、どなたか分かる方教えてください。
pukiwiki.ini.php の ユーザー定義の所のコメント外せは出るけど、何か不具合あるかも知れませんね。
あ、確かにコメントアウトしてありますが、書いてある内容はまったく一緒ですね。
ただ、&nowはその時の時間&_nowは更新された時間という風に違うみたいですね(今気が付いた)
ここで見つけましたが・・・なぜ使えないのかは分かりません・・・。
&_now;は表示日時だったんですね。そうすると、私の意図(更新日時)とも違います。でも、&now;もnow?も、一度ファイルを更新してしまうと、日付文字列に変わってしまうので、2度目のファイルの更新の時には変化しません。むしろ、Last-Modifiedが任意の場所に書けるような&lastmodified;というようなプラグインが欲しいです。
こういった感じので良いでしょうか?>&lastmodified;
<?php function plugin_lastmodified_inline() { global $vars; if (!is_page($vars["page"])) return FALSE; return format_date(get_filetime($vars["page"])); } ?>
&_now; はこれでどうでしょ。
<?php function plugin__now_inline() { return format_date(UTIME); } ?>
&_now;はインライン型プラグインにしなくてもユーザー定義で簡単にできます。PukiWiki.orgでは下記のように定義されています(1.4系専用)。
'&_now;' => format_date(UTIME), '&_date;' => get_date($date_format), '&_time;' => get_date($time_format),
'&now;' => format_date(UTIME), '&date;' => get_date($date_format), '&time;' => get_date($time_format), 'now\?' => format_date(UTIME), 'date\?' => get_date($date_format), 'time\?' => get_date($time_format), '&page;' => substr($page,strrpos('/'.$page,'/')), '&fpage;' => $page,
なお、&lastmodified;については、ファイルのタイムスタンプ取得がhtml.phpのcatbodyの中で行なわれているため、ユーザー定義(html.phpのmake_line_rules)よりもあとに実行される関係で、ユーザー定義ではできません。にぶんのにさんが書かれているようにインライン型プラグインで実現させる必要があります。
PukiWiki.orgでは、下記のように&lastmod;で定義されています。
任意のページの最終更新日時を表示できるようにしてみました。
書式 : &lastmod; &lastmod(WikiName|BracketName); このページの更新日時 : &lastmod; FrontPageの更新日時 : &lastmod(FrontPage); 質問箱/149の更新日時 : &lastmod([[質問箱/149]]); (相対指定も使用可能) &lastmod([[../149]]);
このページの更新日時 : 2012-03-25 (日) 17:20:14
newプラグインと組み合わせ : 2012-03-25 (日) 17:20:14
FrontPageの更新日時 : 2022-08-24 (水) 03:09:31
質問箱/149の更新日時 : &lastmod([[質問箱/149]]);
newプラグインと組み合わせ : &new([nodate]){date}: Invalid date string;
<?php function plugin_lastmod_inline() { global $vars; global $WikiName,$BracketName; $args = func_get_args(); if ($args[0]){ if (preg_match("/^($WikiName|\[\[$BracketName\]\])$/",$args[0])) { $_page = get_fullname(strip_bracket($args[0]),$vars["page"]); } else { return FALSE; } } else { $_page = $vars["page"]; } if (!is_page($_page)) return FALSE; return format_date(get_filetime($_page)); } ?>
すごい。これは便利になりそうです。どうもありがとうございます。ところで、インライン型プラグインとはどこに書けばよいのでしょうか?スキン(skin/pukiwiki.skin.ja.php)に書くことになるのでしょうか?
lastmod.inc.php ってファイルに書いて pluginディレクトリに放りこめばいいんです。dev:PukiWiki/Plug-inの仕様をご参照ください。
了解しました。ありがとうございます。
添付しておきます。lastmod.inc.php
ゲットしました。ありがとうございます。