如何在Prestashop 1.7中用Smarty代码获取产品列表内分类名称及链接
你当前的写法仅输出了分类别名,缺少路由规则要求的分类ID前缀,所以生成的路径不符合预期,可以通过以下两种纯Smarty方法实现需求:
方法1:调用系统内置的分类链接生成函数(最稳妥,适配所有路由规则)
绝大多数基于Smarty开发的电商CMS(如PrestaShop、OpenCart等)都预定义了链接生成的专用方法,会自动适配系统的SEO重写规则,无需手动拼接路径。
- 若为PrestaShop环境,使用代码:
<a href="{$link->getCategoryLink($product.id_category_default, $product.category_name)}">{$product.category_name}</a>
- 若为OpenCart环境,使用代码:
<a href="{$product.category_url}">{$product.category_name}</a> <!-- 若上述变量不存在可使用路由拼接写法,开启SEO后系统会自动转写为带ID的路径 --> <a href="index.php?route=product/category&path={$product.category_id}">{$product.category_name}</a>
方法2:手动拼接路径(仅适用于固定[分类ID]-[分类别名]路由规则的场景)
如果确认你的系统路由规则固定为该格式,且$product变量中存在分类ID字段(常见字段名category_id/id_category),可直接拼接:
<a href="{$urls.base_url}{$product.category_id}-{$product.category_name|escape:'url'}">{$product.category_name}</a>
注意:
escape:'url'为Smarty的URL转义修饰符,可避免分类名包含特殊字符时出现路径错误。
内容的提问来源于stack exchange,提问作者Designer
相关产品推荐
相关产品推荐

