Movable Type 備忘録
MTIfFileExist プラグイン
- Prev Page: トラックバックURLをWebスカウターで表示
- Next Page: MTEntryPrimaryCategory プラグイン
こんにちわ^^
只今、せっせと Movable Type 4 向けテンプレート創作中です。
創作してて思ったことが、任意ファイルの有無によって処理を分岐するってのも良くない!? ってなことで、カンタンにプラグイン作ってみました (●´∀`●)
バージョンアップしました。使い方は今までといっしょですが、タグを自由に使えるようにしました。
MTIfFileExist プラグイン for MT4.x
MTIfFileExistプラグインの使い方
どんなプラグインかというと、<MTIf>~<MTIf> タグや、<MTIfNonZero>~</MTIfNonZero> タグのような使い方で、任意のファイル(or ディレクトリ)の URL(or パス)を指定することで、ファイル(or ディレクトリ)の存在をチェックして、その真偽で処理を分岐させるプラグインです。
具体的には以下のような使い方になります。
<MTIfFileExist url="http://bizcaz.com/index.php"><p>ファイルが存在します</p><MTElse><p>ファイルが存在しません</p></MTIfFileExist>
上記はトップページの URL の有無をチェックして、その結果によって処理を分岐させる例です。
オプション
MTIfFileExist プラグインのオプションを以下に記します。
url
任意のファイルを URL で指定する場合に使用します。<MTIfFileExist url="http://bizcaz.com/index.php"><p>ファイルが存在します</p><MTElse><p>ファイルが存在しません</p></MTIfFileExist>
- 2007.08.24 追記 -
チェックしたファイルの URL にタグを指定できるようにしました。
<MTIfFileExist url="<$MTBlogArchiveURL$>2007/08/index.php"><p>ok</p></MTIfFileExist>
path
任意のファイルをパスで指定する場合に使用します。必ずトップページ(index.html)がある場所からの相対パスで指定します。<MTIfFileExist path="/archives/index.php"><p>ファイルが存在します</p><MTElse><p>ファイルが存在しません</p></MTIfFileExist>
上記は、http://bizcaz.com/archives/index.php ファイルの有無をチェックしたい場合の例になります。
トップページがある場所(http://bizcaz.com/)からの相対パス(/archives/index.php)で指定しています。- 2007.08.24 追記 -
チェックしたファイルのパスにタグを指定できるようにしました。
<MTIfFileExist path="<$MTBlogRelativeURL$>archives/2007/08/index.php"><p>ok</p></MTIfFileExist>
以上です。一応、MT3.3x、MT4 での動作確認済みです。
MTIfFileExist プラグイン
この他にも、<MTEntries>~</MTEntries> コンテナタグなどのループから強制ブレイクできるようなプラグインもあったら便利かなと思ったんですけど・・・わたしには作れなかったです(つω-`。)ムズかしいですの。
Trackback Pings(0)
No trackbacks found.




いつもお世話になっております。
ここに質問していいものかわんないのですが、MTIfFileExistがうまく動作しないので、助けてください。
例えば、
<MTIfFileExist path="/jp/images/<$MTEntryKeywords$>/1-1.jpg">
のようにして画像ファイルの有無を調べたいのですが、タグの部分がうまく動作しません。
タグを使わずに、
<MTIfFileExist path="/jp/images/hogehoge/1-1.jpg">
とするとうまく動作します。
MT3.35です。
どうかよろしくお願いします。
>>1 boushi さん
こんにちわ^^
返事が遅くなってしまってすいません
ご質問の件ですが、まず想定した使い方と違います。
単純に MT タグが使えるって言ってしまったのがまずかったようですね
とりあえず、boushi さんのような使い方もできるように変更してみました。
サーバに UP しましたのでご確認ください
>>2 bzbell さん
早速変更版を作ってくれたなんて感激です。
でも...うまく動作しません...
はじめの状態とかわらず、タグを使うとfalseになってしまいます。
すいません。お願いします。
>>3 boushi さん
えっ Σ( ̄Д ̄;)!!
わたし(MT4.1)の方では問題ないですねぇ。
う~ん、そうすると MT3.35 だとダメなのかなぁ。
以下の点について確認させてください。
その場合、該当する記事のキーワード(MTEntryKeywords)には正しく入力されてますか。
また MTEntryKeywords にはどんな文字列が出力される予定ですか。
> タグを使うとfalseになってしまいます。
上記の false とは、false って表示されるってことでしょうか。
>>4 bzbell さん
> 1. プラグイン一覧にて MTIfFileExist プラグインは正しくロードされているか。
正しくロードされています。タグを指定しない場合は、きちんと動作するので、インストール等は問題ないと思います。
> 2. 再構築は問題ないか。
問題ありません。
> 正しく入力しているか。
正しく入力しています。
> MTEntryKeywords にはどんな文字列が出力される予定か。
URLに使える文字列で、半角英数字と“_”(アンダーバー)のみです。長くても30字くらいです。
> false って表示されるのか。
すいません、紛らわしくて。falseと表示されるわけではありません。falseと判断されるという意味です。
どんなもんでしょうか?よろしくお願いします。
>>5 boushi さん
では、プラグイン中にデバッグコードを埋め込みました。
以下のように使ってみてください。
これにより、MT3.35 環境にてどんな変換がされてるのか確認することができます。
その出力された結果を教えていただけますか。
>>6 bzbell さん
早速テストしてみましたが、エントリーの保存自体ができなくなりました。
エラーメッセージは、
「エントリー・アーカイブ「Torsanlorenzo Prize 2008」の再構築に失敗しました: テンプレート「エントリー・アーカイブ」の再構築に失敗しました: <MTIfFileExist>タグでエラーが発生しました:」です。
プラグインのインストールはきちんとできています。「プラグインについて」を見てみると<$MTDebugText$>タグが追加されていることも確認できます。
<$MTDebugText$>を使用しなければ問題ありませんでした。
あと、関係あるかどうかわかりませんが、
先ほどのコードだと、<MTElse>が閉じられていません、ということでエラーが出てしまいましたので、</MTElse>を追加しました。
面倒なことになってしまって申し訳ありません。
よろしくお願いします。
>>7 boushi さん
そうですかぁ
では再度プラグインを UP しましたので DL して試しみてください。
※ MTDebugText は使用しないでください。
MTElse の件はすいませんでした
MT3.35 では閉じないとダメでしたね。
実は MT4.1 では MTElse を閉じなくっても問題ないんです。
いつか MT4 を使うときのために覚えておくといいかもです
>>8 bzbell さん
結果は同じでした。
タグを使わなければ、正常に判断されます。ダグを使うと全てfalseです。
>>9 boushi さん
すいません、どのように使ってるか、タグを見せてもらうことは可能でしょうか
MT3.35 の環境がないので状況がよく分かりません。
あと、確認しますが、使い方は >>6 の記述でいいですよね!?
MT タグにパラメータなど指定してませんよね!?
それだと正しく動作しないです。
>>10 bzbell さん
タグはこんな感じです。
<div class="presenThumbnail">
<MTIfFileExist path="/jp/images/<$MTEntryKeywords$>/1-1.jpg">
<a href="/jp/images/<$MTEntryKeywords$>/1-1.jpg"><img src="/jp/images/<$MTEntryKeywords$>/1-thumb.jpg" width="100" height="83" border="0" /></a>
<MTElse>
<a href="mailto:office@hogehoge.com"><img src="/jp/images/00contactus.jpg" width="100" height="83" border="0" /></a>
</MTElse>
</MTIfFileExist>
</div>
パラメータはしていません。
いかがでしょうか。
>>11 boushi さん
お手数おかけしました
昔のプラグインのコードと見比べて、MT タグ変換処理を少し変えてみました。
たぶんこのプラグインだと MT4 では動作しないです。
UP しましたのでご確認頂けますか
>>12 bzbell さん
すいません。結果は同じでした。
結構いろんなプラグインを入れているから、もしかしたらそのせいでしょうか。
>>13 boushi さん
> 結構いろんなプラグインを入れているから、もしかしたらそのせいでしょうか。
確かに影響する他と干渉するプラグインもありますが、MTIfFileExist プラグインは他と干渉することってないと思うので、たぶん平気だと思います
デバッグコードをファイルに出力するようにしてました。
お手数ですが再度 DL して使ってみてください。
そして、 plugins/ ディレクトリ内に foo.txt というファイルが作成されますのでその内容を教えていただけますか。
その際、個人的なところは ●●● などのように書き換えてください。
>>14 bzbell さん
foo.txtは作成されましたが、何も書かれていませんでした。
>>15 boushi さん
途中でエラーしてるのかなぁ
今度は必ず何らかの出力がされるようにしましたので、お手数ですが再度 DL して結果を教えていただけますか。
>>16 bzbell さん
出ました。
「間違ったアトリビュート指定です」
と書いてあります。
>>17 boushi さん
およよ!? パラメータ不正のエラーがでてますか。
じゃ、タグに渡してるパラメータ( path= )を出力してますね。
何度もすいませんが、UP しましたので結果を教えて頂けますか。
>>18 bzbell さん
遅くなってすいません。
[]
間違ったアトリビュート指定です
と出ました。
>>19 boushi さん
ということは、MT3.35 では使えないということになりますか
プラグインに期待するパラメータが渡されてこないようです。
path や url で指定されたパラメータを取得できないことにはどうしようもありませんね
パラメータで指定するインターフェイスを変更するなどしないと MT3.35 では使えないみたいです。
すいません。
※MT4 では問題ありません。
>>20 bzbell さん
そうですか。わかりました。残念ですが、仕方ありませんね。
でもでも、ほんとうにほんとうに、ありがとうございました。
こんなふうにコミュニケーションがきるネットの世界って、本当に不思議だなーと改めて思いました。
MT4にしたら、ぜひ使わせていただきます。
ありがとうございました。
こちらのプラグインですが、商用利用させていただいても問題ないでしょうか。
よろしくお願いいたします。
>>22 森山 さん
こんにちわ^^
> こちらのプラグインですが、商用利用させていただいても問題ないでしょうか。
はい。それは問題ないのですが、お使いの MT のバージョンによっては、期待する動作しなかったりするようです。
※以前のバージョンの MT 環境がないため未確認です。
※少なくとも MT4.x では問題ありません。