Smarty 瞄准最后一项

Smarty target last item

所以cscart用了一段时间,每天都在学习,遇到了一些比较烦人的事情

因此,无论何时向特征添加多个值,它都会显示为 f.e。 "OrangeGreen" 而我希望它像 "Orange, Green" 一样查看它。好吧看起来很简单,只需更改 product_features.tpl

{elseif in_array($feature.feature_type, ["ProductFeatures::TEXT_SELECTBOX"|enum, "ProductFeatures::EXTENDED"|enum, "ProductFeatures::NUMBER_SELECTBOX"|enum])}
                {foreach from=$feature.variants item="var"}
                    {if $var.selected}{$var.variant}, {/if}
                {/foreach}

但现在不会是 "Orange, Green"。现在是 "Orange, Green,"

所以你们能帮我弄清楚我如何定位这段代码中的最后一项吗?

您可以使用 foreach 循环的属性,如索引、first 和 last 来访问此循环中的特定元素。

在 Smarty V2 中,您的 foreach 循环需要一个名称属性来访问它的属性:

{foreach from=$feature.variants item="var" name="features"}
  {if $var.selected}{$var.variant}, {/if}
  {if $smarty.foreach.features.last} this is the last element in this loop{/if}
{/foreach}

(文档:http://www.smarty.net/docsv2/en/language.function.foreach.tpl#foreach.property.last

Smarty V3 更简单:

{if $var@last} this is the last element in this loop{/if}

(文档:http://www.smarty.net/docs/en/language.function.foreach.tpl#foreach.property.last

抱歉,我不确定 cs-cart 是否适用于 Smarty V2 或 V3