Home > Internet > Movabletype > モディファイアについて

モディファイアについて

某プロジェクトで、他人のコードを見る機会がいっぱいあって、インデントを含むコードの書き方とか、変数やタグの使い方とか、いろいろ気づかされる事がありました。

そんな中ある方が、私のコードを見て特徴的だと思ったというのが、MTSetVarsの愛用とグローバル・モディファイアを多用する点だったそうです。

モディファイアは複数適用可能

もう当たり前のように、皆さん使ってると思いますけど、1つのMTタグにグローバル・モディファイアを複数回適用する事が可能です。内容の異なる処理を連続して適用する事が可能な訳です。
適用は左から右へ順番に処理されていって、最終的な処理結果が出力される訳です。

しかも、実はコレは条件判断するMTタグにも使用可能で、上手にモディファイアを組み合わせる事で、シンプルな条件判断文が記述できます。

ブログ記事続きの有る無し判断

まぁ、これはリッチエディターかどうかでも結果が変わってくるのですが、ブログ記事の続きに(というか、未入力のまま保存された「本文」と「続き」に)勝手にスペースが入力されるケースがあるようです。(ウチはリッチテキストオフで使用していて、その様な事は無いのですが)
でこの様な場合に、「続きを読む」を自動で出そうと思って下のコードを書いてある時に、入力してないつもりでも「続き」にスペース一文字あるので、「続きを読む」が出てしまうと言う事が発生します。

<mt:if tag="EntryMore">
    <a href="<$mt:EntryPermalink$>#more"><$mt:EntryTitle$></a>
</mt:if>

デフォルトのテンプレートでは下のようになってますが、これは改行変換のフォーマットを「なし」にしているだけなので、結果としては「続きを読む」が表示されます。

<mt:if tag="EntryMore" convert_breaks="0">
    <a href="<$mt:EntryPermalink$>#more"><$mt:EntryTitle$></a>
</mt:if>

そういう時に、以下のように書けば、改行コードを削除(strip_linefeeds)した上で、不要な空白/スペースを削除(trim)を行い、その結果について有り無しの判断をするので、こちらで意図した通りの結果になります。

<mt:if tag="EntryMore" strip_linefeeds="1" trim="1">
    <a href="<$mt:EntryPermalink$>#more"><$mt:EntryTitle$></a>
</mt:if>

ブログ記事の概要の処理

さて、ブログ記事の概要が自動生成されている時だけ、ほにゃららするコードを考えてみましょう。
MTEntryExcerptの条件判断は、意外と難しいのです。

MTEntryExcerptの入力状況で表示内容を変化させようと、「<mt:if tag="EntryExcerpt">」と記入しても、常に内部が出力されます。というのも、「概要」欄が入力されていない時にMTは本文から自動的に概要を生成して、内部に保存するからです。

「概要」欄への入力有り無しの判断をするには、以下のように書けばうまくいきます。

<mt:if tag="EntryExcerpt" no_generate="1"><$mt:EntryExcerpt$><mt:else><$mt:EntryExcerpt remove_html="1" trim="1" words="60" strip_linefeeds="1"$></mt:if>

こんな感じで、自動で生成されたもののみ整形処理を行なえるようになります。
しかし「no_generate」って相変わらずアンドキュメンテッドなんですよね。不思議です。
そもそも、どういう持ち方しているかも不明。DB内にそんな情報は保存されていない。あるのは自動生成されたものと、手入力したものを区別せずに保存しているフィールドのみ。しかもAPI経由の投稿だと、それも保存されてないし。
本文と概要の内容を比較して、先頭が一致してたら自動生成とかなのかな?まぁその部分は、ここではどうでも良いので、飛ばします。

という訳で、モディファイア便利です。みなさんもガンガン使いましょう

ping a Trackback

TrackBack URL for this entry.(1)

Comments:(4)

まーしー`s user-pic まーしー said February 25, 2010 11:29 PM | ReplyThis!

モディファイアは知ってるか知らないかが結構出てくる気もしますね。。。
知ってると、「おぉ〜!!」ってのもあったり無かったり。
ドキュメントとして揃ってくれると嬉しいですが、ないならなんとかならないですかねぇ。

「モディファイア」なのか「モディファイヤ」なのかもどうでもよいけど気になるところです。
どちらにしても、モディファイア、は長いのでなんかもうちょっと短い名前にしてもらいたいとこです(笑

まーしー君おはよう。
>知ってると、「おぉ〜!!」ってのもあったり無かったり。
すでに知ってても、使いどころ教えられて「おぉ〜!!」とかね
元は「Modifier」だから「モディファイア」なのだと思うけど、日本語ではこの手はヤーって読んじゃうことが多いから、はっきりしないんだろうね。
MT3の時って、別な呼び方してなかったけね?

まーしー`s user-pic まーしー replied for oscar's comment February 26, 2010 9:08 AM | ReplyThis!

以前はアトリビュートでしたっけ?

そうだったかも。
まるで覚えてないや嫌な感じ

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > モディファイアについて

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top