【发布时间】:2016-12-01 15:44:43
【问题描述】:
稍后编辑:此问题已得到修复。看来问题出在放错位置的钩子上。
在 Smarty 2 中转义 JavaScript 和 PHP 块的正确和最佳方法是什么?
我已经尝试过:
- 用 {ldelim} 分别更改每个 JS {} {rdelim};
- 在 之前添加 {literal} 并在之后添加 {/literal}
- 添加{php}phpcodehere{/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>
【问题讨论】:
-
PHP 可以在 {php}phpcodehere{/php} 中正常工作,请参阅smarty.net/docsv2/en/language.function.php.tpl#id2807119 看这里:示例 7.29 并尽量不要嵌套 rekursive 以避免错误行为。
-
JavaScript 的 {} 必须分别用 {ldelim} 更改 {rdelim} 我说我已经这样做了,但它不起作用:)。
-
仅在此处显示的代码上执行
change every JS {} with {ldelim} respectiely {rdelim};时不起作用? -
您也应该显示更改的代码,而不仅仅是原始代码。
标签: javascript php cs-cart smarty2