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

Php 检查产品是否在Prestashop 1.6.1.4中有特定标签,php,caching,smarty,prestashop,Php,Caching,Smarty,Prestashop,我想检查产品是否有特定的标签。如果有,我想显示一些文本。下面是我所做的示例。它起作用了。唯一的问题是我会出错 {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

我想检查产品是否有特定的标签。如果有,我想显示一些文本。下面是我所做的示例。它起作用了。唯一的问题是我会出错

 {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 in_数组('rent',$product->tags.1)}
交钥匙租赁选择权
也可立即租用。
请立即索取报价

{/if}
错误日志包含如下条目:

<?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;
?>
警告: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;
?>

tpl_变量['tpl_uri']->值;
?>
我做错了什么导致了这些错误

警告:in_array()要求参数2为数组,在

很简单,函数期望第二个参数是数组,但您将
NULL
作为第二个参数传递

您必须首先检查
$\u smarty\u tpl->tpl\u vars['product']->value->tags[1]
是否为数组,然后在数组中执行
(…)
操作

<?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;
?>

tpl_变量['tpl_uri']->值;
?>

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

 {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}
{if(isset($product->tags)&&&$product->tags)}
{if in_数组('rent',$product->tags.1)}
交钥匙租赁选择权
也可立即租用。
请立即索取报价

{/if} {/if}
使用smarty时会是什么样子?我不能使用@N13设计,我不是Smarty模板的专家,但您尝试过这种方法吗?其中有些东西是Prestashop不喜欢的。我在in_数组语句周围添加了
{if(isset($product->tags)&&$product->tags)}{/if}
。我重置了错误日志。希望这能奏效。