このカテゴリでは、おもにMovable Type 4 で追加されたグローバル・モデファイアの取り扱いに関するサンプルを紹介します。
『グローバル・モデファイア関連サンプル』カテゴリ内のエントリ一覧
- setvarモデファイア(変数代入)
- wrap_textモデファイア(N文字で改行)
- count_wordsモデファイア(単語カウント)
- catモデファイア(文字付加)
- count_charactersモデファイア(文字数カウント)
- count_paragraphsモデファイア(行数カウント)
- repraceモデファイア(文字列置換)
- strip_tagsモデファイア(htmlタグ除去)
- sprintfモデファイア(出力文字列加工)
- zero_padモデファイア(数字0埋め)
setvarモデファイア(変数代入)
テンプレートタグでの出力結果を変数へ代入するには、MTSetVarBlockテンプレートタグを用います。これに加え、Movable Type 4.1からは、出力を行うテンプレートタグへsetvarモデファイアを指定すれば、同じようなことができるようになりました。
「最新のエントリのタイトルを5件、リスト形式で変数へ代入する」というコードを、「MTSetVarBlockを用いた場合のサンプル」と「setvarモデファイアを指定した場合のサンプル」の二通りで説明します。
MTSetVarBlockでのサンプルコード
コード
<p>SetVarBlockでのコード</p>
<MTSetVarBlock name="last5">
<ul>
<MTEntries lastn="5">
<li><MTEntryTitle></li>
</MTEntries>
</ul>
</MTSetVarBlock>
<MTGetVar name="last5">
実行結果
SetVarBlockでのコード
- setvarモデファイア(変数代入)
- wrap_textモデファイア(N文字で改行)
- count_wordsモデファイア(単語カウント)
- catモデファイア(文字付加)
- count_charactersモデファイア(文字数カウント)
setvarモデファイアでのサンプルコード
コード
<p>setvarモデファイアでのコード</p>
<MTEntries lastn="5" setvar="last5">
<li><MTEntryTitle></li>
</MTEntries>
<ul>
<MTGetVar name="last5">
</ul>
実行結果
setvarモデファイアでのコード
- setvarモデファイア(変数代入)
- wrap_textモデファイア(N文字で改行)
- count_wordsモデファイア(単語カウント)
- catモデファイア(文字付加)
- count_charactersモデファイア(文字数カウント)
挙動の相違点
MTSetVarBlockを用いた例では、上記サンプルのようにul、liタグを含めることができます。
対してsetvarモデファイアを用いた例では、MTEntriesブロックタグへ変数名を指定しています。つまりこのブロック内で実行したテンプレートタグの出力結果が変数へ代入されます。付加したliタグも一緒に格納されます。変数 last5の値をMTGetVarで値を取り出すときに、ulタグのみ変数の上下へ書き加える形となります。
ファンクションタグへsetvarモデファイアを指定してみると...
コード
<p>setvarモデファイア(2)</p>
<MTSetVar name="Inc" value="0">
<MTEntries lastn="5" setvar="last5">
<MTSetVar name="Inc" op="++">
<MTIf name="Inc" eq="3">
<MTEntryTitle setvar="three">
<MTElse>
<li><MTEntryTitle></li>
</MTIf>
</MTEntries>
<ul>
<MTGetVar name="last5">
</ul>
<ul>
<li><MTGetVar name="three"></li>
</ul>
実行結果
setvarモデファイア(2)
- setvarモデファイア(変数代入)
- wrap_textモデファイア(N文字で改行)
- catモデファイア(文字付加)
- count_charactersモデファイア(文字数カウント)
- count_wordsモデファイア(単語カウント)
setvarモデファイア注意点
setvarモデファイアは、ファンクションタグにも指定できます。このサンプルコードでは、3番目のエントリタイトルのみ「three」という変数へ代入し、それ以外のエントリタイトルを「last5」という変数へ代入しています。
上記サンプルのように「親ブロックのMTEntriesブロックタグへsetvarモデファイアを指定→ブロック内のMTEntryTitleにもsetvarモデファイアを指定」というように入れ子で使用すると、上記の例では3番目のリストが抜け落ちてしまいます。
これはsetvarモデファイアを指定したテンプレートタグは、実行結果を出力せず、指定した変数へ値の代入を行うだけの挙動に変化するためです。
意図しない出力結果とならないよう、注意が必要です。
wrap_textモデファイア(N文字で改行)
wrap_textモデファイアは、Movable Type 4.1から追加されました。このモデファイアを指定すると、文字数N文字で改行するようになります。
サンプルコード
<MTEntries lastn="1">
<pre><MTEntryBody wrap_text="10"></pre>
</MTEntries>
動作サンプル(スクリーンショット)
count_wordsモデファイア(単語カウント)
count_wordsモデファイアは、出力結果中に半角スペースで区切られた単語(文字の塊)が何個含まれているかを出力します。
文字に含まれるhtmlコードをカットするようremove_html="1"と併せて使用すると安定した結果を返します。なお、モデファイア指定の際は、remove_html="1"を、count_words="1"の前の位置へ持ってこないと正常にhtmlタグがカットされないようです。
この機能は、半角スペースを単語区切りとして使用しない日本語のサイトであるとあまり役には立ちませんが、単語を半角スペースで区切るのが普通な英語(外国語)サイトであると役に立ちそうです。
サンプルコード
<p>単語数:<MTEntryBody remove_html="1" count_words="1"> 語</p>
このエントリにサンプルコードを貼った動作サンプル
単語数:11 語
catモデファイア(文字付加)
catモデファイアは、出力結果中に続けて、モデファイアで指定した文字列を出力します。
サンプルコード
<MTEntryTitle cat="[不許複製]">
このエントリにサンプルコードを貼った動作サンプル
catモデファイア(文字付加)[不許複製]
count_charactersモデファイア(文字数カウント)
count_charactersモデファイアは、出力結果が何文字あるか、文字数を出力します。
空白やhtmlタグも含んでカウントします。
文字に含まれるhtmlコードをカットするようremove_html="1"と併せて使用すると安定した結果を返します。なお、モデファイア指定の際は、remove_html="1"を、count_characters="1"の前の位置へ持ってこないと正常にhtmlタグがカットされないようです。
サンプルコード
<p>文字数=<MTEntryBody remove_html="1" count_characters="1"></p>
このエントリにサンプルコードを貼った動作サンプル
文字数=352
count_paragraphsモデファイア(行数カウント)
count_paragraphsモデファイアは、出力結果が何行あるか、行数を出力します。
サンプルコード
<p>行数=<MTEntryBody count_paragraphs="1"></p>
このエントリにサンプルコードを貼った動作サンプル
行数=5
repraceモデファイア(文字列置換)
replaceモデファイアは、本来の出力結果から特定文字列の正規表現による置換を行い、その結果を出力します。
regex_replaceモデファイアも準備されていますが、コードの書き方が若干異なるだけで、機能は同等です。
サンプルコード(replace)
<MTEntryTitle replace="re","RE">
このエントリにサンプルコード(replace)を貼った動作サンプル
REpraceモデファイア(文字列置換)
サンプルコード(regex_replace)
<MTEntryTitle regex_replace="/re/","RE">
このエントリにサンプルコード(regex_replace)を貼った動作サンプル
REpraceモデファイア(文字列置換)
strip_tagsモデファイア(htmlタグ除去)
strip_tagsモデファイアは、本来の出力結果からhtmlタグの除去を行い、その結果を出力します。
サンプルコード
<MTEntryBody strip_tags="1">
このエントリにサンプルコードを貼った動作サンプル
strip_tagsモデファイアは、本来の出力結果からhtmlタグの除去を行い、その結果を出力します。 サンプルコード <MTEntryBody strip_tags="1"> このエントリにサンプルコードを貼った動作サンプルsprintfモデファイア(出力文字列加工)
sprintfモデファイアは、出力結果をprintf のフォーマットで変換して出力します。
値の余白をゼロで埋めたり、少数以下の値がある演算結果を整数丸めしたり、多様な使用法が考えられます。
サンプルコードでは、12.3456という値を
- 余白のゼロ埋め("00012.3456"を取得)
- 整数丸め("12"を取得)
というように加工してみます。
サンプルコード
<MTSetVar name="SampleValue" value="12.3456">
<MTGetVar name="SampleValue" sprintf="%d"><br />
<MTGetVar name="SampleValue" sprintf="%010s"><br />
このエントリにサンプルコードを貼った動作サンプル
1200012.3456
zero_padモデファイア(数字0埋め)
zero_padモデファイアは、出力結果が全体でN文字になるように余白を0で埋めて出力します。
エントリやカテゴリやアイテムのID番号を調べて並べ替えなどを行う場合に、IDをそのまま文字列として扱うと並び順がおかしくなります。余白をゼロ埋めして正しく並べなおすときなどに用います。
サンプルコードでは全カテゴリのIDを準備し、これの余白をゼロで埋めない場合と、全体で4文字となるようゼロで埋めた場合の出力結果を比較します。
サンプルコード
<p>IDをゼロ埋めしない場合</p>
<MTCategories>
<MTSetvarBlock name="keyvalue"><$MTCategoryID$></MTSetvarBlock>
<MTSetvarBlock name="ShowCategory" key="$keyvalue"><$MTCategoryLabel$></MTSetvarBlock>
</MTCategories>
<ul>
<MTLoop name="ShowCategory" sort_by="key">
<li><$mt:getvar name="__key__"$> <$mt:getvar name="__value__"$></li>
</MTLoop>
</ul>
<!-- いちど初期化 -->
<MTSetvar name="ShowCategory" value="">
<p>IDをゼロ埋めすると正しい順序で並ぶ</p>
<MTCategories>
<MTSetvarBlock name="keyvalue"><$MTCategoryID zero_pad="4"$></MTSetvarBlock>
<MTSetvarBlock name="ShowCategory" key="$keyvalue"><$MTCategoryLabel$></MTSetvarBlock>
</MTCategories>
<ul>
<MTLoop name="ShowCategory" sort_by="key">
<li><$mt:getvar name="__key__"$> <$mt:getvar name="__value__"$></li>
</MTLoop>
</ul>
このエントリにサンプルコードを貼った動作サンプル
IDをゼロ埋めしない場合
- 34 Movable Type 4とは
- 35 CORESERVERでの導入例
- 36 MT4のインストール
- 37 インストール後の設定
- 38 MT3サイトをMT4へ移行(新規)
- 39 MT3サイトをMT4へ移行(上書き)
- 40 トラブル集
- 41 環境設定
- 42 変数
- 43 SetVar系
- 44 GetVar系
- 45 If系
- 46 For系
- 47 Loop系
- 48 共通モデファイア系
- 49 Tips系
- 50 カテゴリ関連サンプル
- 51 エントリ関連サンプル
- 52 フォルダ関連サンプル
- 53 ウェブページ関連サンプル
- 54 アイテム関連サンプル
- 55 タグ関連サンプル
- 56 ユーザー関連サンプル
- 57 コメント関連サンプル
- 58 トラックバック関連サンプル
- 59 Feed関連サンプル
- 60 グローバル・モデファイア関連サンプル
- 61 カスタムフィールド関連サンプル
- 62 テンプレートの作成例
- 63 Windows版XAMPPのセットアップ
- 64 テンプレート解説
- 65 XHTML文書の作成
- 66 CSSを適用する
- 67 その他のサンプル
- 69 ナビゲーション関連サンプル
IDをゼロ埋めすると正しい順序で並ぶ
- 0034 Movable Type 4とは
- 0035 CORESERVERでの導入例
- 0036 MT4のインストール
- 0037 インストール後の設定
- 0038 MT3サイトをMT4へ移行(新規)
- 0039 MT3サイトをMT4へ移行(上書き)
- 0040 トラブル集
- 0041 環境設定
- 0042 変数
- 0043 SetVar系
- 0044 GetVar系
- 0045 If系
- 0046 For系
- 0047 Loop系
- 0048 共通モデファイア系
- 0049 Tips系
- 0050 カテゴリ関連サンプル
- 0051 エントリ関連サンプル
- 0052 フォルダ関連サンプル
- 0053 ウェブページ関連サンプル
- 0054 アイテム関連サンプル
- 0055 タグ関連サンプル
- 0056 ユーザー関連サンプル
- 0057 コメント関連サンプル
- 0058 トラックバック関連サンプル
- 0059 Feed関連サンプル
- 0060 グローバル・モデファイア関連サンプル
- 0061 カスタムフィールド関連サンプル
- 0062 テンプレートの作成例
- 0063 Windows版XAMPPのセットアップ
- 0064 テンプレート解説
- 0065 XHTML文書の作成
- 0066 CSSを適用する
- 0067 その他のサンプル
- 0069 ナビゲーション関連サンプル
- エントリ
- タグ
-
- .htaccess
- Advantage
- Apache
- Archive
- Asset
- Author
- Authority
- AutoSave
- BackUp
- body
- Bug
- Calc
- Category
- Check
- CMS
- Comment
- Company Site
- Config
- Contact
- CORESERVER
- count
- Create
- Creative Commons
- CSS
- Custom Field
- Date
- Default
- delete
- Designer
- DNS
- Domain
- Entry
- Environment
- Eval
- Example
- Export
- Feature
- Feed
- FFFTP
- File
- Folder
- For
- GetVar
- head
- html
- If
- Image
- Import
- Include
- index
- info
- Install
- key
- keyword
- License
- Local
- Loop
- Management
- Manager
- Meta
- Modifier
- Module
- MTElse
- MTElseIf
- MTFor
- MTGetVar
- MTIf
- MTIgnore
- MTLoop
- MTSeHashVar
- MTSetVar
- MTSetVarBlock
- MTSetVars
- MTSetVarTemplate
- MTUnless
- MySQL
- Navigation
- Next
- op
- Page
- Perl
- php
- PhpMyAdmin
- Ping
- Plugin
- pop
- Previous
- Principle
- push
- ReBuild
- Role
- Sample
- SetUp
- SetVar
- shift
- Spam
- Tag
- Template
- TrackBack
- Trouble
- undef
- unshift
- UpGrade
- UpLoad
- Usability
- Variable
- Version
- WebPage
- Wizard
- Writer
- XAMPP
- XHTML
- XML
- 導入編
- ローカル環境
- サンプル
- トラブル集