用于将字典转换为字符串并将其推送到数据层的 Smarty 语法

Smarty syntax for turning a dictionary into a string and push it into the data layer

我正在尝试找到一种方法将字符串变量(来自字典)传递到我网站的数据层。

我的数组是使用以下代码片段构建的:

     [{foreach from=$orderArticles item="currOrderArticle"}]
         [{assign var="currBasePrice2" value=$currOrderArticle-getBasePrice()}]
         product_list.push(
                           { 
                           id: "[{$currOrderArticle-oxorderarticles__oxartnum->value}]", 
                           price: [{$currBasePrice2->getBruttoPrice()}], 
                           quantity: [{$currOrderArticle-oxorderarticles__oxamount->value}] 
                           }
         );
         products_info.push(
                           {
                           transaction_id: '[{$order->oxorder__oxordernr-value}]', 
                           transaction_cid: '[{$order->oxorder__oxuserid-value}]', 
                           item_id: '[{$currOrderArticle-oxorderarticles__oxartnum->value}]',
                           item_value: '[{$basket-getDiscountedNettoPrice()}]',
                           item_quantity: '[{$currOrderArticle-oxorderarticles__oxamount->value}]'
                           }
         );
     [{/foreach}]

如果我想将它传递给数据层,我会执行以下操作:

dataLayer.push({
    ProductsInfo: products_info

});

这很好用,问题是我实际上想修改这个数组。 在将其传递到数据层之前,我想对其应用以下内容:

products_info|json_encode|escape:'url'

但是当我在推送过程中尝试这样做时,它不起作用:

   dataLayer.push({
        ProductsInfo: products_info|json_encode|escape:'url'
});

正如我在另一个 post 中告诉您的那样,Smarty 表达式必须用定界符括起来,在您的情况下 [{ 和 }]

另外,当您使用 javascript 中的字符串时,它必须用引号引起来:

 dataLayer.push({
        ProductsInfo: '[{products_info|json_encode|escape:'url'}]'
});