MagentoのレイアウトXMLには、actionタグというblockのpublicメソッドを呼び出せるタグがあります。
publicメソッドにはいろいろな種類がありますが、基本的なルールと、属性について説明します。

actionタグを記述できる場所

actiontタグは以下の2種類のタグの子要素としてのみ記述できます。

  • block
  • reference

他のタグの子要素に記述しても動作しないので注意してください。

利用できる属性

actionタグには固定で定義されている以下の属性があります。

  • method
  • ifconfig
  • json

それぞれ特有の機能があるので、個別に説明します。

method

method属性は、actionタグで指定するメソッド名を記述します。
親要素のblockクラスに定義されているpublicメソッドであれば、呼び出し可能です。
但し、定義されている引数によってはレイアウトXML上で表現が難しいものがあります。
レイアウトXML上で指定できるのは、文字列または数値が引数が現実的なところでしょう。 

ifconfig

ifconfig属性は管理画面の「システム>設定」画面で設定できる設定項目を判断基準として、メソッドの実行を判断するために使用します。
ifconfig属性に特定の設定パス(設定画面の項目の値を保存している、core_config_dataテーブルの列です)を指定することで、管理画面から特定のブロックの振る舞いを制御することも可能です。

ifconfig属性に指定する値は、core_config_dataテーブルの、path列を調べることでわかりますが、他にも設定画面の入力項目のnameを調べることでもわかります。

json

json属性はあまり使われていない属性です。
この属性に半角スペース区切りで、次に説明するメソッドの引数名を指定すると、引数の値をjsonデコードします。

とはいえ現状あまり使われていない機能なので、使う機会はあまりないでしょう。

メソッドの引数を記述する方法

メソッドの引数を指定するには、メソッドの定義をまず確認する必要があります。
というのも、引数をタグで指定するのですが、このときタグ名とメソッドの定義に書かれている引数の名称を揃えないといけないからです。

もし、タグ名と引数の名称が一致しない場合は、その引数は定義されていないことになり、省略できない引数の場合は未定義としてエラーになります。 

例えば、CSSやJavaScriptファイルをHTMLヘッダとして追加する場合は、headブロックのactionを呼び出します。
以下の例を見てください。


skin_css
css/styles-ie.css

lt IE 8

この例では、addItemメソッドを定義し、

  • type
  • name
  • params
  • if

という引数のタグを定義しています。 
paramsタグは空タグですが、その他のタグにはすべて値が設定されています。

actionタグのメソッドに引数をあたえる場合は、このように引数1つ1つをタグとして記述する事が必要です。