如何遍历 Smarty/Prestashop 中的数组?

How to loop over an array in Smarty/Prestashop?

我在 Prestashop 中使用此代码

{if (strpos($product.name, 'TVNUMBER1') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

所以每当我想显示某些产品正在销售时,我必须逐行指定相同的产品,即 "TVNUMBER1"。 我希望能够编写一个数组 详细说明我在售的所有产品"TV1, TV2, TV3",并获得如下代码:

{if (strpos($product.name, '$array') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

我已经尝试过在此处找到的类似示例,但我无法让它们在 Prestashop 或在线 PHP 测试人员中运行。看起来超级简单,但是绕不过去

看来您正在使用 Smarty 作为模板引擎。所以你可以做这样的事情(来自the doc)。

在控制器中

//Give it to the view
$arr = array('TVNUMBER1', 'TVNUMBER2');
$smarty->assign('myArray', $arr);

并在视图中

//In the view, loop over the array
{foreach from=$myArray item=productName}
    //If your product is among the in-sale ones, show the message
    {if (strpos($product.name, productName) !== false)}
        THIS PRODUCT IS IN SALE
    {/if}
{/foreach}

我想你想要的是 in_array php 函数,它检查给定的 $needle 是否在数组中。

所以你应该做的是:

{if (in_array($product.name, '$array') !== false)}
    THIS PRODUCT IS IN SALE
{/if}

然后在您的控制器中,您可以将数组分配给 smarty :

$arr = array('TVNUMBER1', 'TVNUMBER2', 'TVNUMBER3');
$smarty->assign('myArray', $arr);