特定类别中的Prestashop产品

特定类别中的Prestashop产品,prestashop,categories,product,prestashop-1.7,Prestashop,Categories,Product,Prestashop 1.7,我正在使用Prestashop 1.7,我想检查产品是否属于特定类别,并更改product.tpl上的图像 {if $product->id_category_default == 10} 不起作用。字段中的$product->id\u category\u default只存储了一个值main(~first)category id。如果您的产品属于少数类别,则关系存储在表category\u product中。您可以使用$product->getWsCategories()访问产品所有

我正在使用Prestashop 1.7,我想检查产品是否属于特定类别,并更改product.tpl上的图像

{if $product->id_category_default == 10}

不起作用。

字段中的
$product->id\u category\u default
只存储了一个值main(~first)category id。如果您的产品属于少数类别,则关系存储在表
category\u product
中。您可以使用
$product->getWsCategories()
访问产品所有类别的数组。你可以这样看:

{$product->getWsCategories()|var_dump}
        {foreach from=$product->getWsCategories() key='k' item='category'}
            {if $category.id == 7760}
                here you insert something
            {/if}
        {/foreach}
当您想检查产品是否属于特殊类别时,您应该这样做:

{$product->getWsCategories()|var_dump}
        {foreach from=$product->getWsCategories() key='k' item='category'}
            {if $category.id == 7760}
                here you insert something
            {/if}
        {/foreach}
编辑:

前面的方法在Prestashop 1.4中运行良好,但开发人员将$product对象修改为数组,所以您不能再运行对象函数

我找到了1.7版本的解决方案。见:

{foreach from=Product::getProductCategoriesFull(Tools::getValue('id_product')) item=category}
    {$category|var_dump}
        {if $category.id_category== '1041'}
            // here you can insert img
        {/if}
{/foreach}

它的工作原理与此类似。

谢谢您的回答。如果我在product.tpl中使用{$product->getWsCategories()| var_dump},我什么也看不到。整个网站已关闭,无法加载任何内容。@Sebastian请尝试启用调试模式。@Sebastian,我不确定,但您的Prestashop版本可能没有var_dump插件。但是foreach代码应该运行良好smarty_internal_templatebase.php(157):eval()代码行42:调用ArrayTanks上的成员函数getWsCategories()以获得帮助。真的很好。但我需要改变这部分。{foreach from=Product::getProductCategoriesFull($Product.id)item=category}Tools::getValue('id_Product')和$Product.id