Prestashop 1.7 если одна из категорий товаров, а не category_default - PullRequest
0 голосов
/ 23 февраля 2019

В настоящее время я использую

      {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 было бы истинным, если бы любая из категорий продуктов равнялась значению.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Не рекомендуется использовать это условие на всех страницах.

Верный путь:

Вы должны создать новый модуль, чтобы сделать это, используя перехватчики PrestaShop и куки. Таким образом, Условиепересматривается только в случае изменения корзины.

0 голосов
/ 23 февраля 2019

В принципе, вы должны отделить презентацию (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);
...