我当前正在使用
{assign var="var1" value=false}
{assign var="idCategory" value=37}
{foreach from=$cart.products item=product}
{if $product.id_category_default == $idCategory}
{assign var="var1" value=true}
{/if}
{/foreach}
所有使用该类别作为其主要类别的产品。但是,我想使用他们的最终名称。类别树中最深的类别,作为其默认类别。在那种情况下,这将迫使我将其转换为包含所有不同类别概念的数组。
因此,我宁愿如果任何产品类别等于该值,则if语句将为true。
答案 0 :(得分:0)
原则上,您应该将表示(HTML)与应用程序/处理(PHP)分开。我建议在PHP级别进行该计算并将结果传递给Smarty。我完全不熟悉PrestaShop,因此我对$cart
包含的内容进行了假设,但是这种通用的PHP代码应该可以工作:
<?php
const DESIRED_CATEGORY = 37;
$cart = [
// list some products falling into two categories, 1 and 37
'products' => [
'apples' => [ 'id_category_default' => 1 ],
'oranges' => [ 'id_category_default' => 1 ],
'bananas' => [ 'id_category_default' => 1 ],
'cheese' => [ 'id_category_default' => 37 ],
'yoghurt' => [ 'id_category_default' => 37 ],
'butter' => [ 'id_category_default' => 37 ],
],
];
// this returns [ 1, 1, 1, 37, 37, 37 ];
$categories = array_column($cart['products'], 'id_category_default');
// this will be true if and only if at least one product is category 37
$hasCategory = in_array(DESIRED_CATEGORY, $categories);
$smarty->assign('hasCategory37', $hasCategory);
答案 1 :(得分:0)
不建议在每页中使用此条件。
正确的方法:
您必须创建新模块才能使用PrestaShop挂钩和cookie。通过这种方式, 仅当更换购物车后,情况才会重新审核。