php - Prestashop 1.7 如果产品类别之一,而不是 category_default
问题描述
我目前正在使用
{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 语句为真。
解决方案
原则上,您应该将演示文稿 (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);
推荐阅读
- javascript - JS IE 错误(对象不支持属性或方法“选择”)
- sql - 从数据库中删除样式 (SQL Server)
- sql - 如何将备忘录字段的前缀与postgresql中的短文本字段进行比较?
- laravel - 工厂在测试中计数 2 个模型而不是 1 个
- javascript - 在 Vue 中使用计算函数的参数
- google-apps-script - 试图通过打开的工作表循环 setFormula()
- python - 尝试导入 seaborn 库(python)时出错
- html - 电子邮件中的 HTML 图像是在收件人收到之前还是之后呈现的?
- node.js - 为什么我的 MERN / Passport 用户登录不会在成功时重定向?
- social-media - 你如何制作登录系统?