PrestaShop的tpl文件中如何从foreach遍历结果选取指定位置分类项
PrestaShop product.tpl 提取指定位置单个分类的实现方法
Product::getProductCategoriesFull() 方法返回的是按层级排序的分类索引数组,数组下标从0开始计数,你不需要遍历整个数组,直接指定下标提取对应位置的分类即可,操作步骤如下:
- 先把产品分类列表赋值给变量,避免重复调用方法提升性能:
{assign var="full_cats" value=Product::getProductCategoriesFull($product.id_product)} - 提取指定位置的分类,以提取第3个分类为例(对应下标为2),记得加存在性判断避免数组越界报错:
{* 下标从0开始,第N个分类对应下标为N-1 *} {if isset($full_cats[2])} <a href="{$link->getCategoryLink($full_cats[2].id_category)}" title="{$full_cats[2].name}">{$full_cats[2].name}</a> {/if}
补充场景:提取最后一级子分类
如果需要取最后一级子分类,不需要手动数下标,可以用数组计数动态获取最后一位的下标:
{assign var="cat_total" value=$full_cats|count} {if $cat_total > 0} {* 最后一位下标为总数量减1 *} {assign var="last_cat" value=$full_cats[$cat_total - 1]} <a href="{$link->getCategoryLink($last_cat.id_category)}" title="{$last_cat.name}">{$last_cat.name}</a> {/if}
注意事项
你原代码中
{$link->getCategoryLink({$cat.id_category})}内层嵌套的大括号是冗余写法,Smarty解析时可能报错,直接写{$link->getCategoryLink($cat.id_category)}即可。
内容的提问来源于stack exchange,提问作者JoZu
相关产品推荐
相关产品推荐

