首页 > 解决方案 > 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 语句为真。

标签: phpprestashopsmartyprestashop-1.7

解决方案


原则上,您应该将演示文稿 (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);

推荐阅读