HOME > Movable Type > カスタマイズ > <MTSetVarBlock> と<MTSetVarTemplate>の動作の違い

<MTSetVarBlock> と<MTSetVarTemplate>の動作の違い

前の記事で「最近まで、<MTSetVarTemplate>って、どんな時に使うの...」って、書いたので試した結果を書いておきます。

サンプルコード

  • <$MTSetVar name="var_result" value="0"$>
  •  
  • <MTSetVarBlock name="SetVarBlock">
  • <$MTGetVar name="var_result"$>
  • </MTSetVarBlock>
  •  
  • <MTSetVarTemplate name="SetVarTemplate">
  • <$MTGetVar name="var_result"$>
  • </MTSetVarTemplate>
  •  
  • <ul>
  • <MTFor var="n" from="1" to="10">
  •  
  •      <li>
  •           <span class="SetVarBlock">SetVarBlock: <$MTGetVar name="SetVarBlock"$></span>
  •           <span class="SetVarTemplate">SetVarTemplate: <$MTGetVar name="SetVarTemplate"$></span>
  •      </li>
  •  
  •      <$MTSetVar name="var_result" value="$n">
  •  
  • </MTFor>
  • </ul>

結果

  • SetVarBlock: 0 SetVarTemplate: 0
  • SetVarBlock: 0 SetVarTemplate: 1
  • SetVarBlock: 0 SetVarTemplate: 2
  • SetVarBlock: 0 SetVarTemplate: 3
  • SetVarBlock: 0 SetVarTemplate: 4
  • SetVarBlock: 0 SetVarTemplate: 5
  • SetVarBlock: 0 SetVarTemplate: 6
  • SetVarBlock: 0 SetVarTemplate: 7
  • SetVarBlock: 0 SetVarTemplate: 8
  • SetVarBlock: 0 SetVarTemplate: 9

<MTSetVarBlock>は、タグが読み込まれると中の処理を実行し、結果を記憶し<$MTGetVar $>で呼び出された時にその内容が出力されます。

<MTSetVarTemplate>は、タグが読み込まれても処理は実行されず、<$MTGetVar$>で呼び出された時に初めて実行、出力されます。関数のように使えるということでしょうか?処理の中に変数が含まれていれば呼び出された時点の変数の内容が使用されます。

そんな感じでしょうか?

UP