Smarty3の継承で親テンプレートに値を渡す方法

Smarty3のテンプレートの継承機能がすごい便利なんですが、ページのベースとしてタブなどのメニューを作った時に子から親に変数を渡すことができなくて少し面倒なところがあります そこで、ちょっとずるいけど子から親にデータを渡すことの出来る方法を見つけたので紹介します!

やりかた

  1. 親テンプレートで一番最初に

    1
    {block name="vars"}{/block}

    を付けておく

  2. 子テンプレートで

    1
    {block name="vars"} {assign value="val" var="key"} {/block}

    と書く。

これで、親テンプレートで{$key}とやるときちんと”val”が表示されました! 原理はすごい単純で、smartyがブロックを継承した部分は子テンプレートのじょうほうをいれることをりようして、 一番最初に変数の宣言を入れちゃってるだけです。 変数を使用する前に入れるならどこでもいいのですが、一番最初にしておくとわかりやすいと思います。 自分はこれを使ってメニューリストのタブの部分をURL解析から変数に変えることができました。 色々と活用方法があると思うので、頭の片隅にでも入れておくといいかもしれません