Prestashop 1.7 tpl模板中如何获取产品原始上传图片路径
PrestaShop 1.7 产品原始上传图片路径获取方案
- 首先明确:产品.tpl模板中没有内置变量可以直接调用原始上传图片的路径。
模板里默认挂载的$product.default_image.bySize数组,仅存储系统按照后台配置的尺寸规则自动裁剪生成的各类缩略图地址,对应文件名都带-{尺寸名}.jpg的后缀,不会直接返回用户上传的无尺寸后缀原始图地址。
可直接在.tpl文件中使用的获取方式
方式1:替换缩略图路径后缀(最简单,无需改后端逻辑)
因为同一张产品图的原始文件和large_default尺寸缩略图存储在同一个目录下,仅文件名差了-large_default的尺寸后缀,直接用Smarty的字符串替换标签就能拿到原始图地址,示例代码:
{* 生成原始图片访问路径 *} {$original_product_img = $product.default_image.bySize.large_default.url|replace:'-large_default.jpg':'.jpg'} {* 实际使用示例 *} <img src="{$original_product_img}" alt="{$product.name|escape:'htmlall':'UTF-8'}" loading="lazy">
适配提示:如果你的站点开启了WebP格式自动生成功能,把替换规则里的后缀对应调整,将
-large_default.webp替换为.webp即可正常使用。
方式2:通过图片ID拼接路径(兼容性更强,不受尺寸配置影响)
如果担心后续后台调整large_default尺寸配置、或者误删对应尺寸缩略图导致替换规则失效,可以直接按照PrestaShop固定的图片存储规则,用图片ID拼接路径,不需要依赖任何已生成的缩略图,只要原始文件存在就能拿到正确地址:
{assign var='img_id' value=$product.default_image.id} {* PrestaShop默认按图片ID拆分三级目录存储原图 *} {assign var='chunk_path' value=$img_id|substr:0:1|cat:'/'|cat:$img_id|substr:1:1|cat:'/'|cat:$img_id|substr:2:1|cat:'/'} {assign var='original_product_img' value=$urls.img_url|cat:'p/'|cat:$chunk_path|cat:$img_id|cat:'.jpg'}
内容的提问来源于stack exchange,提问作者be-1
相关产品推荐
相关产品推荐

