繁体   English   中英

逃脱Smarty 2的JS和PHP块

[英]Escape JS and PHP blocks for Smarty 2

稍后编辑:此问题已修复。 看来问题出在钩子放错了地方。

逃避Smarty 2中的JavaScript和PHP块的正确和最佳方法是什么?

我试图:

  • 分别用{ldelim}和{rdelim}更改每个JS {};
  • 在之前添加{literal},在之后添加{/ literal}
  • 在此处添加{php} phpcode {/ php}

他们似乎都不起作用。

这是我的代码,需要转义:

<script>
    var _ra = _ra || {};
    _ra.sendProductInfo = {
        "id": "{$product.product_id}",
        "name": "{$product.product}",
        "url": "{$config.current_url|fn_url}",
        "img": "{$product.main_pair.detailed.image_path}",
        {if $ra_oldPrice == $product.price or not is_numeric($ra_oldPrice)}
        "price": "{if $product.list_price > $product.price}{$product.list_price}{else}{$product.price}{/if}",
        "promo": "{if $product.list_price > $product.price}{$product.price}{else}0{/if}",
        {else}
        "price": "{$ra_oldPrice}",
        "promo": "{$product.price}",
        {/if}
        "brand": false,
        "category": [{
            "id": "{$catid}",
            "name": "{$product.main_category|fn_get_category_name}",
            "parent": false,
            "breadcrumb": []
        }],
        "inventory": {
            "variations": false,
            "stock": "{$product_amount = $product.inventory_amount|default:$product.amount}{if ($product_amount <= 0 || $product_amount < $product.min_qty) && $settings.General.inventory_tracking == "Y"}0{else}1{/if}"   
        }
    };
</script>

请试试:

<script data-no-defer> 
    var _ra = _ra || {$ldelim}{$rdelim};
    _ra.sendProductInfo = {$ldelim}
        id: {$product.product_id},
        name: '{$product.product|escape:'javascript'}',
        url: '{$config.current_url|fn_url}',
        img: '{$product.main_pair.detailed.image_path}',
        {if $ra_oldPrice == $product.price or not is_numeric($ra_oldPrice)}
        price: {if $product.list_price > $product.price}{$product.list_price}{else}{$product.price}{/if},
        promo: {if $product.list_price > $product.price}{$product.price}{else}0{/if},
        {else}
        price: {$ra_oldPrice},
        promo: {$product.price},
        {/if}
        brand: false,
        category: [{$ldelim}
            id: {$product.main_category},
            name : '{$category_name=$product.main_category|fn_get_category_name}{$category_name|escape:'javascript'}',
            parent: false,
            breadcrumb: []
        {$rdelim}],
        inventory: {$ldelim}
            variations: false,
            stock: {$product_amount = $product.inventory_amount|default:$product.amount}{if ($product_amount <= 0 || $product_amount < $product.min_qty) && $settings.General.inventory_tracking == "Y"}0{else}1{/if}   
        {$rdelim}
    {$rdelim};
</script>
  • 我唯一不知道的变量是$ra_oldPrice但我想是您在上面分配的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM