&_date; &_time; &_now; がデフォルトで有効になっていない (未実装)†
- ページ: BugTrack
- 投稿者: Mizar
- 優先順位: 低
- 状態: 完了
- カテゴリー: その他
- 投稿日: 2005-02-08 (火) 12:55:11
- バージョン: 1.4.5
メッセージ†
BugTrack/602の続きになります。
CVS:整形ルール(リンクはr1_4_5時点の内容)の解説にて、
行中で &_date; と書くと、表示時の日付に置換されます
行中で &_time; と書くと、表示時の時刻に置換されます
行中で &_now; と書くと、表示時の日時に置換されます
との説明が含まれています(2023-03-23, 20:31:00, 2023-03-23 (木) 20:31:00 についての言及が追加されたのはr1_4_final→r1_4での更新)が、標準のPukiWiki1.4.5のままではこの設定が含まれないため、自力でこれを導入しないと使うことができません。
パッチ適用例†
- default.ini.php
@@ -82,6 +82,10 @@
$usefacemark = 1;
/////////////////////////////////////////////////
+// 日時置換ルールを使用する
+$usedatetime = 1;
+
+/////////////////////////////////////////////////
// ユーザ定義ルール
//
// 正規表現で記述してください。?(){}-*./+\$^|など
@@ -163,4 +167,14 @@
'&(faxto);' => '[faxto]',
);
+/////////////////////////////////////////////////
+// 日時置換ルール(コンバート時に置換)
+// $usedatetime = 1なら日時置換ルールが適用されます
+// 必要のない方は $usedatetimeを0にしてください。
+$datetime_rules = array(
+ '&_now;' => format_date(UTIME),
+ '&_date;' => get_date($date_format),
+ '&_time;' => get_date($time_format),
+);
+
?>
- lib/init.php
@@ -380,6 +380,10 @@
if ($usefacemark) $line_rules += $facemark_rules;
unset($facemark_rules);
+// 日時置換ルールを$line_rulesに加える
+if ($usedatetime) $line_rules += $datetime_rules;
+unset($datetime_rules);
+
// 実体参照パターンおよびシステムで使用するパターンを$line_rulesに加える
//$entity_pattern = '[a-zA-Z0-9]{2,8}';
$entity_pattern = trim(join('', file(CACHE_DIR . 'entities.dat')));
コメント†
- 日時置換ルール用のオプションを追加するよりも、フェイスマーク置換ルールのオプションを「リッチな」置換ルールのオプションという扱いにしてまとめてしまった方がスマートかも。 -- Mizar
- &_date; &_time; &_now; については無かった事にし、マニュアルから記載を削除する方向で検討した方が良いでしょうか?私としては、リッチな置換ルールの1つという扱いで標準のdefault.ini.phpに設定を追加した方が良いと思っていますが、これを却下した上でマニュアルから記載を削除する事も選択肢として存在します。 -- Mizar
- いつもありがとうございます。この隙に考えて見ます -- henoheno
- うーむ、これらの機能は「ユーザーに常に情報を与える」ために用いられるモノなので、default.ini.php だけではなく、 keitai.ini.php も対象にしていなければいけないようです。オン・オフの切り替えも、そのPukiWiki全体に効果が及ぶようでなければいけないでしょう。つまり定義をを置く場所や、全体をオン・オフするための設定を置く場所について、あともうちょっと考える必要があるようです。 -- henoheno
- cvs:wiki/C0B0B7C1A5EBA1BCA5EB.txt (1.16)
- ということで、ひとまず実装されていないこれらの機能に関する説明を外しておきました。 -- henoheno
- 1.16ではなく、1.17ですね。dev:FormattingRulesをこの内容に更新しておきました。 -- Mizar
- 上記コメントの作業は確かに r1.16 に関するものなので問題ないです (^^; orgサイトやdevサイト自身のヘルプコンテンツは、通例それぞれが今現在使っているPukiWikiのバージョンに含まれているものにしているので、本当はまだそのままでも良いのですが、折角なのでそのままにしておきましょう :) -- henoheno
- っと、勘違い失礼しました。 (^^; -- Mizar
- defaultとkeitaiの双方を対象にできる安直な方法というと、プラグインで実装した方が楽そうな気もしますがどうでしょうか。 -- Mizar
- 例えば、こんな感じで。 -- Mizar
- plugin/_now.inc.php
<?php
function plugin__now_inline()
{
return format_date(UTIME);
}
?>
- plugin/_date.inc.php
<?php
function plugin__date_inline()
{
global $date_format;
return get_date($date_format);
}
?>
- plugin/_time.inc.php
<?php
function plugin__time_inline()
{
global $time_format;
return get_date($time_format);
}
?>
- 上記のようなプラグインでの実装だと、どのような問題点が挙げられるでしょうか? -- Mizar
- あ、プラグインマニュアルの量が増えるかな -- henoheno
- あとの対応としては、default, keitaiなどの各状態でどちらも読み込む、共通の定義ファイルを別途用意することができそうですね -- henoheno
- (もうあるけどアレが使えるかどうかは未検討です -- henoheno
- というところまでMizarさんとIRCでやりとりしたけれど、体が持ちそうにないのでここまで。 -- henoheno
- マニュアルの分量が多少増えますが、プラグインの方が実装も楽そうですし、使用されないページに対するパフォーマンスの影響もほぼ無いと考えていますが、いかがでしょうか。 -- Mizar
- 頭文字が記号である問題については、当面の措置として_date、_now、_timeをそれぞれd、n、tの欄に配置してもいいかと思います。マニュアルに記載する内容はこんな感じ(./添付文書)になるでしょうか? -- Mizar
- 以前に言っていた共通の定義ファイルであるアレ*1、すなわち rules.ini.php の中で片付けられないかと検討中です。 -- henoheno
- 上記 Mizar さんの実装例 (default.ini.lphpに対するものetc) を使うことで、defaultでもkeitaiスキンでも問題なく動作しているようです。 -- henoheno
- CVSに収録しました。これでいかがでしょうか。 -- henoheno
- BugTrack/798: Added documented but not implemented features: &_date; &_time; &_now; (by Mizar)
- CVSへの収録を確認しました。完了とする前に、BugTrack/602で実装を見合わせるべきではと話していた方や、その他にも設定ファイルの変化やパフォーマンスの悪化を気にされる方から、実装を行うなら置換ルールとプラグインのどちらの実装が良かったか意見が欲しいのですが…(どちらの実装とするにも未だ躊躇いがあります)。置換ルールの方向に異議が出ないようならこのまま完了ですかね。あとは整形ルールの取消線を元に戻さないと (^^; -- Mizar
- こんにちは :) 実装を見合わせる意見の理由は負荷対策のようですね。これらに対しては既にMizarさんがパッチの中で示されているように、on/offできる余地があれば問題ないかと思います。どちらが良かったかについては、昨日まで動作を見ていませんでしたのでハッキリいえませんでしたが、今は設定値として片付けた方がシンプルであるように思っています。プラグイン方式に比べるとoffにしたり、カスタマイズをするのも楽チンです。とはいえこの「表示の際に置換する」機能は汎用的な機能ですから、$usedatetime という変数名で無くっても良い気はしています(良い名前が浮かびません)。しばらく様子を見ましょうか :) -- henoheno
- PukiWiki/1.4/添付文書/FormattingRules &_date;、 &_time;、 &_now; に付けていた取消線の除去 --
format_date() の表示がおかしい†