Smarty の構文解析を回避する (基本構文) - PHPプロ!マニュアル

Smartyマニュアル

基本構文 - Smarty の構文解析を回避する

Smarty の構文解析を回避する

時々、Smarty の構文解析の対象にしたくないと望む、 もしくはそうする必要がある部分があります。 典型的な例としては、 テンプレートに Javascript や CSS コードが含まれるときです。 それらの言語が Smarty のデフォルトの デリミタ である { と } を使用するときに問題が発生します。

もっとも単純な解決方法は、Javascript と CSS コードをそれぞれファイルに切り分け、 それらにアクセスするために標準的な HTML の機能を使用する事で状況を回避する事です。

リテラルコンテンツを含めるには {literal}..{/literal} ブロックを使用します。 HTML エンティティの使用法と同様に、 {ldelim}{rdelim} あるいは {$smarty.ldelim} を使用して現在のデリミタを表示することができます。

単純に Smarty の $left_delimiter および $right_delimiter を変更するだけでも便利になることが多々あります。

例 3-8. デリミタを変更する例

<?php

$smarty
->left_delimiter '<!--{';
$smarty->right_delimiter '}-->';

$smarty->assign('foo''bar');
$smarty->assign('name''Albert');
$smarty->display('example.tpl');

?>

テンプレートはこのようになります。

Welcome <!--{$name}--> to Smarty
<script language="javascript">
  var foo = <!--{$foo}-->;
  function dosomething() {
    alert("foo is " + foo);
  }
  dosomething();
</script>


Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)