MovableTypePlugin「 FileModifiedTime」開発してみた
Management Member K.K DEVチーム
ふり返ると五年ぶりの投稿。。
久しぶりにエンジニア出来る時間が一ヶ月ほど取れるということで、
SERVER作ったり、CMS作ったり、APP作ったり。
幼少期の寝ても覚めてもRPG(ドラクエ)状態です。
さて、作ったのはキャッシュコントロール用のパラメーターを付与するプラグインです。 プロジェクトにもよりますが、手入力だったり、JSやPHPだったり、色々あるのですがこういうの。
<link rel="stylesheet" href="/css/style.css?id=2601231234">
?id=***** みたいな数字とかです。 ファイルが更新されましたので、新たに読み込み直して下さい。 というブラウザに対するオマジナイみたいなのものです。
日頃はファイルのタイムスタンプ取得して以下のようにPHPなどでそのまま出力させてたいたのですが、ある案件でPHPが使えないので、MTタグでないかなと探していたのですが、見つからなくて。
/**
* ファイルの最終更新日時をタイムスタンプで取得(キャッシュ制御用)
*
* @param string $filename ファイルパス
* @return string タイムスタンプまたは'null'
*/
function getFileUpdateVersion($filename) {
if (file_exists($filename)) {
$mtime = @filemtime($filename);
return $mtime !== false ? (string)$mtime : 'null';
}
return 'null';
}
// 呼び出し例 (HTML出力時)
<link rel="stylesheet" href="/css/style.css?v=<?php echo getFileUpdateVersion('/css/style.css'); ?>">
皆、大好き生成AIに聞いても世の中に存在しないプラグインを何度も提案されます。さもや存在してそうなタグとか書いてくるが、どこにも存在しないプラグイン...結局、
- 再構築の日時
- インデックステンプレートにして更新日時
- アセット管理で更新日時
などの代替案しかなく、Localで開発したりGitでソースを管理しているとその辺りが都合よくいかず。PHPの呼び出し例のように出力させる仕様で作りました、一応動いているので満足です。
<link rel="stylesheet" href="/css/style.css?v=<mt:FileModifiedTime file="/css/style.css">">
初めてGithubにpublicで公開してみました。
Releasesという方法で配布するのが一般的なのでしょうか。
使いたい方がいればご自由にご活用頂ければと思います。
https://github.com/suffix-co-jp/mt-plugin-file-modified-time/releases
詳細はREADME.mdをご覧ください。
追伸:バナーはChatGPTにつくって貰いました、Thx:)
