在 Prestashop 1.6.1.4 中检查产品是否有特定标签

Check if product has specific tag in Prestashop 1.6.1.4

我想检查产品是否有特定标签。如果是这样,我想显示一些文字。以下是我所做的示例。有用。唯一的问题是我收到错误。

 {if in_array('rent', $product->tags.1)}
      <img id="turnKeyimg" alt="TurnKey Rental Option" src="{$tpl_uri}img/key.png"/>
      <h3>TurnKey Rental Option</h3>
      <p>Also available for immediate rental.<br />Request a quote today</p>
 {/if}

错误日志有这样的条目:

警告:in_array() 要求参数 2 为数组,第 330 行 /cache/smarty/compile/94/4d/52/944d5284e871d0de7a0c6b84ebb2089ad579ed8b.file.product.tpl.php 中给出的空值

缓存中的第 330 行如下所示:

<?php if (in_array('rent',$_smarty_tpl->tpl_vars['product']->value->tags[1])) {?> 
     <img id="turnKeyimg" alt="TurnKey Rental Option" 
     src="<?php echo $_smarty_tpl->tpl_vars['tpl_uri']->value;
?>

我做错了什么导致这些错误?

Warning: in_array() expects parameter 2 to be array, null given in ...

简单,in_array() 函数期望第二个参数是一个数组,但您将 NULL 作为第二个参数传递。

你得先判断$_smarty_tpl->tpl_vars['product']->value->tags[1]是不是数组,然后再做你的in_array(...)运算。

<?php if (is_array($_smarty_tpl->tpl_vars['product']->value->tags[1]) && in_array('rent',$_smarty_tpl->tpl_vars['product']->value->tags[1])) {?> 
     <img id="turnKeyimg" alt="TurnKey Rental Option" 
     src="<?php echo $_smarty_tpl->tpl_vars['tpl_uri']->value;
?>

为了修复错误消息,我添加了一个数组是否存在的检查。没有更多的错误。

 {if (isset($product->tags) && $product->tags)}
    {if in_array('rent', $product->tags.1)}
      <img id="turnKeyimg" alt="TurnKey Rental Option" src="{$tpl_uri}img/key.png"/>
      <h3>TurnKey Rental Option</h3>
      <p>Also available for immediate rental.<br />Request a quote today</p>
    {/if}
{/if}