如何遍历 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);
我在 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);