[Smarty]{debug}でGoogleChromeのウィンドウが複数開く場合の対処法

Smartyで{debug}と書くと、デバグコンソールが開いて大変便利です。...開くのが1個だけなら。

chrome_debug_smarty.png

↑問題は、Google Chromeだと画面遷移したりF5キーを押すたびに新しいウィンドウが開いてしまうことです。
上記のような画面を見たことはないでしょうか?
画面遷移してるうちに複数のウィンドウが立ち上がってしまって非常に邪魔です。
私の知る限りではSmartyバージョン2.6系でこの問題が起こります。他のバージョンでも起こるかもしれません。

解決方法

Smartyのlibs/debug.tplを改修します。

144行目あたりからJavascriptのコードがあるので、そこに1行追加しましょう。
<script type="text/javascript">
// <![CDATA[
    if ( self.name == '' ) {ldelim}
       var title = 'Console';
    {rdelim}
    else {ldelim}
       var title = 'Console_' + self.name;
    {rdelim}

    {literal}title = {value : 'dummy'};{/literal}
    _smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
    _smarty_console.document.write('{$debug_output|escape:'javascript'}');
    _smarty_console.document.close();
// ]]>
</script>
これで解決!

(IE9, Firefox5, GoogleChrome12 で動作確認済みです)
カテゴリ: