Movable Type 備忘録

 MTIfFileExist プラグイン

こんにちわ^^

只今、せっせと Movable Type 4 向けテンプレート創作中です。
創作してて思ったことが、任意ファイルの有無によって処理を分岐するってのも良くない!? ってなことで、カンタンにプラグイン作ってみました (●´∀`●)

バージョンアップしました。使い方は今までといっしょですが、タグを自由に使えるようにしました。
MTIfFileExist プラグイン for MT4.x

MTIfFileExistプラグインの使い方

どんなプラグインかというと、<MTIf>~<MTIf> タグや、<MTIfNonZero>~</MTIfNonZero> タグのような使い方で、任意のファイル(or ディレクトリ)の URL(or パス)を指定することで、ファイル(or ディレクトリ)の存在をチェックして、その真偽で処理を分岐させるプラグインです。

具体的には以下のような使い方になります。

  1. <MTIfFileExist url="http://bizcaz.com/index.php">
  2. <p>ファイルが存在します</p>
  3. <MTElse>
  4. <p>ファイルが存在しません</p>
  5. </MTIfFileExist>

上記はトップページの URL の有無をチェックして、その結果によって処理を分岐させる例です。

オプション

MTIfFileExist プラグインのオプションを以下に記します。

  • url
    任意のファイルを URL で指定する場合に使用します。

    1. <MTIfFileExist url="http://bizcaz.com/index.php">
    2. <p>ファイルが存在します</p>
    3. <MTElse>
    4. <p>ファイルが存在しません</p>
    5. </MTIfFileExist>

    - 2007.08.24 追記 -

    チェックしたファイルの URL にタグを指定できるようにしました。

    1.  <MTIfFileExist url="<$MTBlogArchiveURL$>2007/08/index.php">
    2.     <p>ok</p>
    3. </MTIfFileExist>
  • path
    任意のファイルをパスで指定する場合に使用します。必ずトップページ(index.html)がある場所からの相対パスで指定します。

    1. <MTIfFileExist path="/archives/index.php">
    2. <p>ファイルが存在します</p>
    3. <MTElse>
    4. <p>ファイルが存在しません</p>
    5. </MTIfFileExist>

    上記は、http://bizcaz.com/archives/index.php ファイルの有無をチェックしたい場合の例になります。
    トップページがある場所(http://bizcaz.com/)からの相対パス(/archives/index.php)で指定しています。

    - 2007.08.24 追記 -

    チェックしたファイルのパスにタグを指定できるようにしました。

    1. <MTIfFileExist path="<$MTBlogRelativeURL$>archives/2007/08/index.php">
    2.     <p>ok</p>
    3. </MTIfFileExist>

以上です。一応、MT3.3x、MT4 での動作確認済みです。
MTIfFileExist プラグイン

この他にも、<MTEntries>~</MTEntries> コンテナタグなどのループから強制ブレイクできるようなプラグインもあったら便利かなと思ったんですけど・・・わたしには作れなかったです(つω-`。)ムズかしいですの。

 Trackback Pings(0)

No trackbacks found.

 Comments(23)

#1: Posted by boushi @ May 30, 2008 [REPLY]
user-pic

いつもお世話になっております。
ここに質問していいものかわんないのですが、MTIfFileExistがうまく動作しないので、助けてください。

例えば、
<MTIfFileExist path="/jp/images/<$MTEntryKeywords$>/1-1.jpg">
のようにして画像ファイルの有無を調べたいのですが、タグの部分がうまく動作しません。
タグを使わずに、
<MTIfFileExist path="/jp/images/hogehoge/1-1.jpg">
とするとうまく動作します。
MT3.35です。
どうかよろしくお願いします。

#2: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>1 boushi さん

こんにちわ^^

返事が遅くなってしまってすいませんキャハハ

ご質問の件ですが、まず想定した使い方と違います。
単純に MT タグが使えるって言ってしまったのがまずかったようですねあせあせ

とりあえず、boushi さんのような使い方もできるように変更してみました。
サーバに UP しましたのでご確認くださいもじもじ

#3: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>2 bzbell さん

早速変更版を作ってくれたなんて感激です。

でも...うまく動作しません...
はじめの状態とかわらず、タグを使うとfalseになってしまいます。

すいません。お願いします。

#4: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>3 boushi さん

えっ Σ( ̄Д ̄;)!!
わたし(MT4.1)の方では問題ないですねぇ。
う~ん、そうすると MT3.35 だとダメなのかなぁ。
以下の点について確認させてください。

  1. プラグイン一覧にて MTIfFileExist プラグインは正しくロードされてますでしょうか。
  2. 正しくロードされてると仮定して、再構築は問題ないわけですよね。
    その場合、該当する記事のキーワード(MTEntryKeywords)には正しく入力されてますか。
    また MTEntryKeywords にはどんな文字列が出力される予定ですか。

> タグを使うとfalseになってしまいます。

上記の false とは、false って表示されるってことでしょうか。

#5: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>4 bzbell さん

> 1. プラグイン一覧にて MTIfFileExist プラグインは正しくロードされているか。
正しくロードされています。タグを指定しない場合は、きちんと動作するので、インストール等は問題ないと思います。

> 2. 再構築は問題ないか。
問題ありません。

> 正しく入力しているか。
正しく入力しています。

> MTEntryKeywords にはどんな文字列が出力される予定か。
URLに使える文字列で、半角英数字と“_”(アンダーバー)のみです。長くても30字くらいです。

> false って表示されるのか。
すいません、紛らわしくて。falseと表示されるわけではありません。falseと判断されるという意味です。

どんなもんでしょうか?よろしくお願いします。

#6: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>5 boushi さん

では、プラグイン中にデバッグコードを埋め込みました。
以下のように使ってみてください。

<MTIfFileExist path="/jp/images/<$MTEntryKeywords$>/1-1.jpg">
<p>ok</p>
<MTElse>
<p><$MTDebugText$></p>
</MTIfFileExist>

これにより、MT3.35 環境にてどんな変換がされてるのか確認することができます。
その出力された結果を教えていただけますか。

#7: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>6 bzbell さん

早速テストしてみましたが、エントリーの保存自体ができなくなりました。
エラーメッセージは、
「エントリー・アーカイブ「Torsanlorenzo Prize 2008」の再構築に失敗しました: テンプレート「エントリー・アーカイブ」の再構築に失敗しました: <MTIfFileExist>タグでエラーが発生しました:」です。

プラグインのインストールはきちんとできています。「プラグインについて」を見てみると<$MTDebugText$>タグが追加されていることも確認できます。
<$MTDebugText$>を使用しなければ問題ありませんでした。

あと、関係あるかどうかわかりませんが、
先ほどのコードだと、<MTElse>が閉じられていません、ということでエラーが出てしまいましたので、</MTElse>を追加しました。

面倒なことになってしまって申し訳ありません。
よろしくお願いします。

#8: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>7 boushi さん

そうですかぁガーン
では再度プラグインを UP しましたので DL して試しみてください。
※ MTDebugText は使用しないでください。

MTElse の件はすいませんでしたあせあせ
MT3.35 では閉じないとダメでしたね。
実は MT4.1 では MTElse を閉じなくっても問題ないんです。
いつか MT4 を使うときのために覚えておくといいかもですうぅ~ん

#9: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>8 bzbell さん

結果は同じでした。
タグを使わなければ、正常に判断されます。ダグを使うと全てfalseです。

#10: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>9 boushi さん

すいません、どのように使ってるか、タグを見せてもらうことは可能でしょうかあせあせ
MT3.35 の環境がないので状況がよく分かりません。

あと、確認しますが、使い方は >>6 の記述でいいですよね!?
MT タグにパラメータなど指定してませんよね!?

それだと正しく動作しないです。

#11: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>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>

パラメータはしていません。
いかがでしょうか。

#12: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>11 boushi さん

お手数おかけしましたテレテレ
昔のプラグインのコードと見比べて、MT タグ変換処理を少し変えてみました。

たぶんこのプラグインだと MT4 では動作しないです。

UP しましたのでご確認頂けますかグウグウ

#13: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>12 bzbell さん

すいません。結果は同じでした。
結構いろんなプラグインを入れているから、もしかしたらそのせいでしょうか。

#14: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>13 boushi さん

> 結構いろんなプラグインを入れているから、もしかしたらそのせいでしょうか。

確かに影響する他と干渉するプラグインもありますが、MTIfFileExist プラグインは他と干渉することってないと思うので、たぶん平気だと思いますグウグウ

デバッグコードをファイルに出力するようにしてました。
お手数ですが再度 DL して使ってみてください。
そして、 plugins/ ディレクトリ内に foo.txt というファイルが作成されますのでその内容を教えていただけますか。
その際、個人的なところは ●●● などのように書き換えてください。

#15: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>14 bzbell さん

foo.txtは作成されましたが、何も書かれていませんでした。

#16: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>15 boushi さん

途中でエラーしてるのかなぁガーン
今度は必ず何らかの出力がされるようにしましたので、お手数ですが再度 DL して結果を教えていただけますか。

#17: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>16 bzbell さん

出ました。
「間違ったアトリビュート指定です」
と書いてあります。

#18: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>17 boushi さん

およよ!? パラメータ不正のエラーがでてますか。
じゃ、タグに渡してるパラメータ( path= )を出力してますね。
何度もすいませんが、UP しましたので結果を教えて頂けますか。

#19: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>18 bzbell さん

遅くなってすいません。

[]
間違ったアトリビュート指定です

と出ました。

#20: Posted by Author Profile Page bzbell @ May 31, 2008 [REPLY]
user-pic

>>19 boushi さん

ということは、MT3.35 では使えないということになりますかあせあせ
プラグインに期待するパラメータが渡されてこないようです。

path や url で指定されたパラメータを取得できないことにはどうしようもありませんねグウグウ
パラメータで指定するインターフェイスを変更するなどしないと MT3.35 では使えないみたいです。

すいません。
※MT4 では問題ありません。

#21: Posted by boushi @ May 31, 2008 [REPLY]
user-pic

>>20 bzbell さん

そうですか。わかりました。残念ですが、仕方ありませんね。
でもでも、ほんとうにほんとうに、ありがとうございました。
こんなふうにコミュニケーションがきるネットの世界って、本当に不思議だなーと改めて思いました。
MT4にしたら、ぜひ使わせていただきます。
ありがとうございました。

#22: Posted by 森山 @ June 1, 2008 [REPLY]
user-pic

こちらのプラグインですが、商用利用させていただいても問題ないでしょうか。
よろしくお願いいたします。

#23: Posted by Author Profile Page bzbell @ June 1, 2008 [REPLY]
user-pic

>>22 森山 さん

こんにちわ^^

> こちらのプラグインですが、商用利用させていただいても問題ないでしょうか。

はい。それは問題ないのですが、お使いの MT のバージョンによっては、期待する動作しなかったりするようです。
※以前のバージョンの MT 環境がないため未確認です。
※少なくとも MT4.x では問題ありません。

 Post a Comment

 

コメント用フィード