Movable Type 備忘録
GetDate プラグイン
- Prev Page: JCalendarColor プラグイン
- Next Page: RandomEntries プラグイン
こんばんわ^^
日付にまつわるプラグインを作ってみました。
追加される機能は以下の通りです。
- 今日の日付を取得
- 任意の日付を作成
- 任意の日付からX日後(前)の日付を作成
- 任意の日付の存在チェック
- 指定日を過ぎたかどうかチェック
ダウンロード
使い方
使い方はカンタンです。
各機能別に説明していきます。
MTToday ファンクションタグ
今日の日付を取得するファンクションタグです。
YYYY-MM-DD のフォーマットで表示されます。デフォルトの日付に関するモディファイアと併用することができます。<div><mt:Today></div>
MTMakeTime ファンクションタグ
任意の日付を作成することができます。YYYY-MM-DD のフォーマットで表示されます。デフォルトの日付に関するモディファイアと併用することができます。
以下のモディファイアを選択してください。
- date モディファイア
作成したい日付( YYYY-MM-DD )を指定します。 - year モディファイア
作成したい日付の年数を指定します。month、day モディファイアといっしょに使います。省略した場合は、現在の年が利用されます。 - month モディファイア
作成したい日付の月数を指定します。year、day モディファイアといっしょに使います。省略した場合は、現在の月が利用されます。 - day
作成したい日付の日数を指定します。year、month モディファイアといっしょに使います。省略した場合は、現在の日が利用されます。 - pass
任意の日付からX日後(+X)、またはX日前(-X)の日にちを指定して作成します。
date モディファイアで指定日付作成
<div><mt:MakeTime date="2000-01-01"></div>
year, month, day モディファイアで指定日付作成
<div><mt:MakeTime year="9" month="3"></div>
pass モディファイアで 20 日後の日付作成
<div><mt:MakeTime date="2000-01-01" pass="+20"></div>
pass モディファイアで 20 日前の日付作成
<div><mt:MakeTime date="2000-01-01" pass="-20"></div>
- date モディファイア
MTCheckDate ブロックタグ
指定した日付が存在するか否かをチェックするブロックタグです。 以下の date モディファイアでチェックしたい日付の存在をチェックするか、year、month、day モディファイアの組み合わせで指定した日付が存在するかチェックすることができます。
- date モディファイア
指定した日付( YYYY-MM-DD )が存在するかどうかをチェックします。 - year モディファイア
チェックしたい年( YYYY )を指定します。month、day モディファイアと組み合わせて使用します。このモディファイアを省略した場合には現在の年が利用されます。 - month モディファイア
チェックしたい月( MM )を指定します。year、day モディファイアと組み合わせて使用します。このモディファイアを省略した場合には現在の月が利用されます。 - day
チェックしたい日( DD )を指定します。year、month モディファイアと組み合わせて使用します。指定しなかった場合には現在の日が利用されます。
<div><mt:setvar name="date" value="2010-02-28"><mt:CheckDate date="$date">ok<mt:Else>ng</mt:CheckDate></div>
- date モディファイア
MTIsLater ブロックタグ
指定日( YYYY-MM-DD )を過ぎたかどうかチェックするブロックタグです。 以下の date モディファイアを基準に、year、month、day モディファイアで指定した数値( 日数 )内かどうかをチェックすることができます。
- date モディファイア
基準となる日付( YYYY-MM-DD )を指定します。year、month、day モディファイアと併用します。
指定しなかった場合には今日の日付を基準とします( 常に TRUE となる )。 - year モディファイア
チェックしたい年( YYYY )を指定します。
date モディファイアで指定した日付を基準に、このモディファイアで指定した年数内かどうかチェックできます。 - month モディファイア
チェックしたい月( MM )を指定します。
date モディファイアで指定した日付を基準に、このモディファイアで指定した月数内かどうかチェックできます。 - day
チェックしたい日( DD )を指定します。
date モディファイアで指定した日付を基準に、このモディファイアで指定した日数内かどうかチェックできます。
<div><mt:IsLater date="2009-04-11" day="3">2009/04/11 から 3 日以内なら表示</mt:IsLater></div>
- date モディファイア
以上です。
よかったら使ってみてください。
Trackback Pings(1)
- from
SOHOカアチャン通信
このサイトの人気No.1は「MT4 カスタムフィールドで日時を取得」なんですが、...




お久しぶりです。
遅くなりましたが、リンクを貼らせていただいたご報告であります。
遠いうちにLinksページをちゃんとつくろうとは思いますが、今のペースでは相当遠い話になりそうです。
それと質問があるのですが、ここにくるまでに「Movabletype備忘録」とぐぐったところ、検索トップの下になんとメニューが表示されるではあーりませんか。
私のHPもそのように設定したいと思うのですが、そんなことできるのでしょうか。
毎回見に来るたびに仰天の機能で驚くばかりです。
私も人に聞いてばかりではなく時間を見ながらもっとしっかりと勉強しないとと思うばかりです。
>>1 ビリー・トランクス さん
こんにちわ^^
> 私のHPもそのように設定したいと思うのですが、そんなことできるのでしょうか。
トップ下のメニューって、「HOME」とか「BROGROLL」ってあるところのメニューのことですよね
!?
できる、できないで言ったらできると思います。
普通に CSS でデザインしてるだけですので
ただし、ビリー・トランクス さんとこの CSS などを把握してないし、ウチとまったく同じというわけにはいきませんけどね。
今ビリー・トランクス さんのサイト見たら、作業中なのかメニューが崩れてました
あのー、使い道が分からないのですが・・・
/mt/mt.cgiで変更できるんですが・・・。それ以外に何が必要なんですか?
よく分からなくて済みません。
>>3 カメリア さん
こんにちわ^^
元々は訪問者さんから相談された内容から作ったプラグインなんです。
なので、すべての人とって有用かというとそうでもないかもしれませんね
一応各タグの説明をもう少し詳しく書いてみました。
遅くなりました。
何故かコメントできませんでした。
トップ下のメニューとは、自分のサイトのではなく、検索結果の1位に表示されたものです。
Movabletype備忘録
サイト説明・・・・・・・・・・・・・・・・・・・・・・・・・・・・
サイト説明・・・・・・・・・・・・・・・・・・・・・・・・・・・・
メニュー メニュー
メニュー メニュー
メニュー メニュー
こんな感じです。
これは狙って出来るものではないのでしょうか。よろしくお願いします。
>>5 ビリー・トランクス さん
こんばんわ^^
すいませんが、できればメールフォームからご連絡頂けますでしょうか。
ビリー・トランクス さんがご質問されてることはまったく記事とは関係ないので
いつも参考にさせていただいています。
mt:Today format="%m"
として月だけを2桁で取得したいのですが、
実際には「2009-09-16 14:26:02」となっていしまいました。
どこか問題があるのでしょうか?
便利なプラグインをありがとうございます。
早速、MTIsLater ブロックタグを使用させてもらっていますが、一点ご質問させてください。
date モディファイアに入力した日付が"2009-**-**"の場合は正常に判定されて、"2010-**-**"の場合には判定されずそのまま表示されてしまったのですが、どのような原因が考えられますでしょうか?
また、私も「>>7 Hiro さん」と同様の問題が発生してしまいした。この点についてもご教授いただけますと幸いです。
ちなみに、動作環境はMT5.01となります。
よろしくお願いいたします。
>>8 ネム さん
こんばんわ^^
以下の変更を入れたプラグインを UP( ver1.01 )しましたので、改めて DL してお使い頂けたらと思います。また、MTMakeTime でも format は利用可能です。
たとえば、2010-02-28 は今日( 2010-01-31 )より未来なので NG となり、2009-02-28 は過去なので OK となります
以上です。
>>9 bzbell さん
素早いご回答・ご対応ありがとうございました!
早速ダウンロードさせていただきました。
まだ MTToday ファンクションタグの確認しかできていませんが、出力が「2010年12月2-日 02: 1 」となってしまいました(今日の16:00頃です)
私の方に問題があるかもしれませんので引き続き確認させていただきますが、もし何かお分かりになりましたらお知らせいただけますと助かります;;
度々すみませんが、よろしくお願いします。
>>10 ネム さん
こんばんわ^^
すいません。わたしのミスでした。
ごめんなさい。
format モディファイアに対応する際に MT の CORE に渡すパラメータにミスがありました
動作確認したバージョン( 1.02 )を UP しましたのでご確認頂けたらと思います。
今後ともどうぞよしなに
こちらのプラグインをMT4.34で使用させて頂いたのですが、MTTodayをアーカイブインデックスで使用すると再構築時に以下のエラーが表示されてしまいます。
「Can't locate object method "build_date" via package "MT::Template::Context" 」
またMTIsLaterは再構築時にエラーが出ないのですが、機能していないようなので確認して頂けないでしょうか。
宜しくお願い致します。
>>12 森本ミホ さん
こんばんわ^^
お返事が遅くなってすいません。
すいません。
ご質問の件ですが、GetDate プラグインが MT4.x に対応しなくなってました
先ほど MT4.x と MT5.x 用のプラグインを分割し UP( ver1.03 )しました。
改めてダウンロードしてご確認ください
お世話になります。
MT4.1にて、GetDataプラグイン(1.03のmt4.x版)を利用させていただこうとしたところ、
リビルド時に
Undefined subroutine &GetDate::_hdlr_date called
at /**/plugins/GetDate/lib/GetDate.pm line 10.
とのエラーが表示されてしまいました
こちら直す方法がありましたらお教え願えますでしょうか
宜しくお願いいたします
>>14 Pink さん
こんばんわ^^
お返事が遅くなってすいません。
不具合の件ですが対応しましたので、改めて DL して頂きご確認頂けたらと思います。
今後ともどうぞよしなに
ありがとうございます!動作確認できました!
サーバの都合でPHPもSSIも効かず困っておりました。
とても助かりました~。
管理者様の今後ますますのご活躍をお祈り申し上げます。
本当にありがとうございました。
お世話になります。
現在、投稿日が今日より3日以内のものを別でピックアップして処理するとして以下のように組んだのですが、何故か今日(4/30)が対象外となってしまいました。
mt:EntryDate format="%Y-%m-%d" setvar="upday"
mt:MakeTime format="%Y-%m-%d" date="$upday" pass="4" setvar="pastday"
mt:IsLater date="$pastday"
div style="background-color:#000000;"
mt:IsLater
mt:IsLater date="$pastday" day="3"
div style="background-color:#FF00FF;"
mt:IsLater
私のタグの組み方がおかしいのかもしれませんが、ちょっと分からなかったので質問します。
よろしくお願いします。
>>17 Akikumo さん
こんばんわ^^
ご質問の件ですが、少々使い方が違ってるようです
IsLater タグは現在の日付( 今日の日付 )と date モディファイア、または year、month、day モディファイアで指定した日付を比較して、過去か否かをチェックするタグになります。
ですので、Akikumo さんが想定されてる投稿日(任意の日付)から 3 日以内…といった使い方ではないんです。
でも、そのような機能も対応は可能です。対応したらご報告しますので少々お待ちを
>>17 Akikumo さん
こんにちわ^^
MTIsLater タグに pass モディファイアを追加しました。
これにより Akikumo さんがやりたかったこと!?ができるかと思います。
というより、予め MTMakeTime タグを使って 3 日後の日付を作って date モディファイアで指定して頂ければ実現可能でしたが、そういったことを GetDate プラグインに機能を包含しました。
よかったら使ってみてください
>>19 bzbell さん
ご対応ありがとうございます。
質問としましては、その、「今日」と比較して投稿日が「3日以内」なら、という処理をしたかったので、おっしゃるようなことをしたつもりでした。
つまり、投稿日が3日以内か、と、投稿日が3日以降か、を判断するのに、投稿日の4日後の日付を作って、その日付と現在日を比較していたつもりでした。
が、いろいろ試している内に変なコードになってしまったようです。。。
もう一度見直してみます。お手数をお掛けしました。
便利なプラグインありがとうございます。
更新日から何日後と表示したいのですが、エラーが出ていまいます。何か対策はありますでしょうか?
<$MTEntryModifiedDate format="%Y-%m-%d"$>(次回更新予定日:<mt:MakeTime date="<$MTEntryModifiedDate format="%Y-%m-%d"$>" pass="+20" format="%Y-%m-%d">)
>>21 きよ さん
こんばんわ^^
すいません…MTMakeTime タグの date モディファイアの、その使い方は間違ってます
以上です。以下のように変更してみてください。
bzbell さん
ご回答ありがとうございます。
早速修正したとことろ、正常に動きました。
たぶん簡単なことだろうと、
素人なりに、何度もやってみてうまくいかなかったので、
本当にありがとうございます。
これでほかにもいろいろ使えます。
bzbell さん
度々すみません
掲載日から14日以内は「New」表示がどうしてもうまくいきません。
-----------------------------------------------
<$mt:EntryDate format="%Y-%m-%d" setvar="new"$>
<mt:IsLater date="$new" day="14">
<i>New</i>
</mt:IsLater>
-----------------------------------------------
と記述しています。
>>24 きよ さん
こんばんわ^^
すいません。わたしの不具合がありました
改めて ver1.06 を DL して頂き、以下のように使ってください。
bzbell さん
こんばんは
早速対応いただきありがとうございます。
すみません。
ver1.06を入れなおして、組み込んで見たのですが、
すべてのデータにNewが表示されています。
ためしたのは以下の記述で
-------------------------------------
<$mt:EntryDate format="%Y-%m-%d" setvar="new"$>
<$MTGetVar name="new"$>
<mt:IsLater date="$new" pass="-14">
<i>New</i>
</mt:IsLater>
-------------------------------------
で
表示されたのが
-------------------
2010-05-18 New
-------------------
です。
<$MTGetVar name="new"$>
ちゃんとセットされているかの確認なので、
運用時には削除します。
誤りがありましたらお教えいただけますでしょうか。
>>26 きよ さん
こんばんわ^^
わたし、この mt:IsLater というタグの目的を見失ってしまって何がしたいのかわからなくなっちゃいました。
ですので、根本的に考え直したくお時間頂けますか。
ご迷惑をお掛けしてすいません
bzbell さん
お手数をおかけしてすみません。
現在は
「石輪っぷり!」さんのソース
<mt:SetVarBlock name="today"><$mt:Date format="%Y%j"%></mt:SetVarBlock>
<mt:SetVarBlock name="passed"><$mt:EntryDate format="%Y%j"%></mt:SetVarBlock>
<mt:SetVar name="passed" value="$today" op="sub">
<mt:If name="passed" ge="-14">
<i>New</i>
</mt:If>
<mt:If name="passed" ge="-649">
<mt:If name="passed" le="-635">
<i>New</i>
</mt:If>
</mt:If>
を利用させていただいています。
でもGetDateの方がソースを整理するには、明快なので使えるようになるとありがたいなと思っています。
それにしても、多くの方の善意でうちのMTもいろいろ出来てます。
本当にありがとうございます。