Shopware6:如何获取缩略图实际宽高?模板添加图片宽高属性需求
在Shopware6模板中获取图片缩略图的实际尺寸
要拿到缩略图的真实渲染尺寸(而非预设的固定尺寸),核心是直接获取实际生成的缩略图实体的尺寸属性,而不是用Media对象本身的width/height(这两个确实是预设值)。
具体实现步骤
在Twig模板中,通过Media对象的getThumbnail()方法,传入你的缩略图预设名称,就能拿到对应预设下实际生成的缩略图信息:
{# 替换成你实际使用的缩略图预设名称,比如"product_detail"、"listing"等 #} {% set targetThumbnail = media.getThumbnail('product_detail') %} {% if targetThumbnail %} {# 使用实际生成的缩略图尺寸 #} <img src="{{ targetThumbnail.url }}" width="{{ targetThumbnail.width }}" height="{{ targetThumbnail.height }}" alt="{{ media.alt|default('') }}" > {% else %} {# fallback逻辑:如果缩略图未生成,用原图尺寸或其他处理 #} <img src="{{ media.url }}" width="{{ media.width }}" height="{{ media.height }}" alt="{{ media.alt|default('') }}" > {% endif %}
原理说明
Shopware生成缩略图时,会根据原图的宽高比例自动调整,不会强制拉伸到预设的固定尺寸。比如你预设1200×1200,原图是1200×700的横向图,生成的缩略图实际就是1200×700,这个真实尺寸会存在ThumbnailEntity对象里,通过getThumbnail()就能获取到。
注意事项
- 确保传入的预设名称和你在Shopware后台配置的缩略图预设名称完全一致
- 新上传的图片可能需要等待缩略图生成任务完成,所以模板里要加
if targetThumbnail的判断,避免报错
内容的提问来源于stack exchange,提问作者Gitte Wange Olrik
相关产品推荐
相关产品推荐

