OpenCart 3 Twig模板中AND运算符使用错误排查求助
OpenCart 3 Twig 产品属性判断逻辑修复
问题根源
你当前的代码逻辑存在核心错误:在遍历单个属性(attribute)时,判断它的attribute_id同时等于2和3——单个属性的ID不可能同时是两个值,所以第一个条件永远不会触发。同时,循环会导致符合条件的属性分别输出多次(比如有属性2就输出一次"Floor",有属性3就输出一次"Numbers of floors"),完全不符合你“根据是否同时存在两个属性来显示对应文本”的需求。
修复方案
先收集当前产品所有的属性ID,再根据集合的包含关系判断输出内容:
{# 先收集当前产品的所有属性ID到数组 #} {% set product_attribute_ids = [] %} {% for attribute_group in attribute_groups %} {% for attribute in attribute_group.attribute %} {% set product_attribute_ids = product_attribute_ids|merge([attribute.attribute_id]) %} {% endfor %} {% endfor %} {# 根据属性ID集合判断输出 #} {% if 2 in product_attribute_ids and 3 in product_attribute_ids %} Floor/Number of floors {% elseif 2 in product_attribute_ids %} Floor {% elseif 3 in product_attribute_ids %} Numbers of floors {% endif %}
代码说明
product_attribute_ids:通过遍历所有属性组和属性,把所有属性ID合并到一个数组中,这样就能一次性判断产品是否包含指定属性。- 条件判断部分:先检查是否同时包含2和3,再依次检查单个属性存在的情况,确保逻辑顺序正确,完全匹配你的需求。
补充说明
如果需要在某个属性组的位置插入这段文本,可以调整代码位置,确保先收集完所有属性后再进行判断输出。
内容的提问来源于stack exchange,提问作者Alines
相关产品推荐
相关产品推荐

