Movable Typeで日付比較(Movable Type × PHP)

謎のプリン語る。
プログラミングの役立つ、エンジニア技術情報とか、どうでもいい雑談とか書いてます。
一人書く人増えました。

Movable Typeで日付比較(Movable Type × PHP)

Movable Typeで日付比較(Movable Type × PHP) - サムネイル

※この記事は9年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。

おはこんばちは。
このサイトのブログも、気づけば4年くらいやってるのに気づき、
古い情報の記事も増えてきたので、
よくある、この記事は古いですよ〜表記をしようと思った。
というか、このサイト自体MTで作ってるのに、そういえばMTの記事まったく書いてなかったなっても思い、今回の題材。

そう、今回は、デベロッパーが必ずぶつかる壁、"日付比較"です。

MTだけでやろうと思ったけど、難しかったので、
PHPとの合わせ技にしました。

下記感じでやっていく。

<MTIgnore>エントリーの日付を取得、MT変数に格納する</MTIgnore>
<MTEntryDate format="%Y-%m-%d" setvar="entryDate">
<?php
$articleModiTime = strtotime('<MTGetVar name="entryDate">'); // PHPの変数に、MT変数の日付をタイムスタンプに変換して格納。
$timeNow = time(); // 現在の日付タイムスタンプを格納。

$yearTime = 60 * 60 * 24 * 365; // タイムスタンプの年の秒数を定義
$yearDif = 0; // 現在との年の差を格納するための変数

// 現在と記事の日付が、一年以上の開きがあったら表示
if($timeNow - $articleModiTime > $yearTime):
 $yearDif = floor(($timeNow - $articleModiTime) / $yearTime); // 時間差を年で割って、小数点以下切り捨て
 ?>
<p>
※この記事は<?php echo $yearDif; ?>年以上前の記事です。<br>
現在は状況が異なる可能性がありますのでご注意ください。
</p>
<?php endif; ?>

単純に、タイムスタンプに格納して、
比較して〜一年以上の開きがあったら、表示、みたいにしている。
MTだけで日付比較しようと思ったんだけど、今より古いかどうかしか
できないのと、タイムスタンプを出す方法がすぐ見つからなかったので、
どれだけの日付差があるか、はめちゃくちゃいろいろ調べないとor長いプログラム書かないと
できないと思ったので、PHP使ってしまえと思って、今回のスクリプトでした。

いやー、PHPあったらなまらいろいろできるわ。
多分Perl書ける人なら、わざわざPHP使わないでも、できるかと思います。
僕はMT使ってる割にPerlは全然使えませんw

ついでといってはなんだけど、
HTMLPHPとして実行する方法というか、.htaccessの書き方に関しては下記エントリを参照のこと。
このサイトも、HTMLPHPとして実行してます。

【サーバー別】HTML上でPHPを実行するための.htaccessの記述
http://m630.net/archives/816

いろいろとマルチに言語使えるといろいろやれるね。
つまづいたら、一つの言語にこだわらずに、
複合してみてる道が開けやすいかもしれない。

ではまた。

著者

みやびプリン 職業:フロントエンドエンジニア
基本はイラストレイター(自称)だが、
本職は札幌市のフロントエンドエンジニア。
フロントエンドだけではなく、各種プログラミング言語に精通していると自負している。
HTML、CSSはもちろんのこと、JavaScript、TypeScript、PHP、Perl、Python、C#、Kotlin、Swift、Objective-Cなど多くの多くの言語に精通している他、
Movable Type、WordPressなど各種CMS、React.js、Angularなどフロントエンドフレームワークも扱える。
最近はUnityによる3Dコンテンツにも手を出している。

トラックバック(0)

トラックバックURL:

コメントする

ページトップへ戻る