0

js/jquery 関数に smarty コードを入れましたが、動作せず、空白のページが表示されます。これを修正するには?

{literal}
<script type="text/javascript">
  jQuery(document).ready(function($){
      $("#IsGroupGallery").click(function() {
      {literal} {if $photos} $.lightbox(["{"\", \""|implode:$photos}"]); {/if}{/literal}
      return false;
    });

  });
</script>
{/literal}
4

2 に答える 2

2

内部リテラルタグは逆方向であり、{literal}タグ内に追加のリテラルをネストしようとしています({literal}はSmartyにコンテンツを変更しないように指示するため、明らかに機能しません)。代わりに次のようになります。

{literal}
<script type="text/javascript">
  jQuery(document).ready(function($){
      $("#lbgallery").click(function() {
      {/literal} {if $photos} $.lightbox(["{"\", \""|implode:$photos}"]); {/if}{literal}
      return false;
    });
  });
</script>
{/literal}

外側のリテラルタグ内の2つのリテラルタグが逆になっていることに注意してください。最初にリテラルを終了してから再起動する必要があります。そうしないと、内側の{literal}タグの内容もリテラルとして扱われ、評価されません。これは、何をしようとしても意味がありません。行う :)

于 2012-08-12T14:42:31.027 に答える
1

ヒント:Smarty3は{ ifリテラル文字列(「自動リテラル」)として解析します。したがって{、空白で囲まれている場合は常に、Smarty3によって無視されます。

それが(何らかの理由で)役に立たない場合、またはSmarty 2で立ち往生している場合は、{literal}タグがネストされないことに注意してください。

{literal}
<script type="text/javascript">
  jQuery(document).ready(function($){
      $("#lbgallery").click(function() {
{/literal}
      {if $photos} $.lightbox(["{"\", \""|implode:$photos}"]); {/if}
{literal}
      return false;
    });
  });
</script>
{/literal}
于 2012-08-12T14:42:27.100 に答える