You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SendGrid动态模板中能否通过复杂Handlebars表达式简化品牌logo判断逻辑

SendGrid动态模板匹配品牌logo的实现方案

核心结论

完全可以通过Handlebars的字符串包含匹配能力,实现仅4条判断覆盖全部门店的需求,相比逐门店写条件判断的可维护性提升一个量级,且不需要额外开发自定义辅助方法,SendGrid平台原生就支持相关能力。

可直接落地的字符串匹配写法

SendGrid动态模板原生内置了contains辅助方法,可判断目标变量中是否包含指定关键词。结合你当前storeName采用「品牌名 - 门店编号」固定格式的特点,直接对品牌关键词做包含判断即可,不需要拆分提取门店编号部分,参考写法如下:

{{#contains storeName "Real One"}}
  <img src="real-one-official-logo.png" alt="Real One 品牌">
{{else contains storeName "Low Beam"}}
  <img src="low-beam-official-logo.png" alt="Low Beam 品牌">
{{else contains storeName "Monte"}}
  <img src="monte-official-logo.png" alt="Monte 品牌">
{{else contains storeName "Huskar Promo"}}
  <img src="huskar-promo-official-logo.png" alt="Huskar Promo 品牌">
{{else}}
  <img src="default-fallback-logo.png" alt="通用默认品牌">
{{/contains}}

这种写法的优势:

  • 仅4条核心判断,就能覆盖当前所有100+门店,后续新增门店只要品牌名不变,完全不需要修改模板逻辑
  • 从根源上解决你之前逐门店写判断的问题:不需要为100多家门店逐一写匹配分支,也避免了多层嵌套条件容易写错的语法问题(你之前的示例代码里就出现了多套一层大括号、嵌套结构错位的问题)
  • 最后增加了兜底分支,万一后续出现新增品牌未及时补充判断的情况,不会出现图片加载失效的问题

长期维护更优的方案

如果后续还会持续新增品牌线、调整品牌logo素材,更省维护成本的优化方向是从传参侧调整:

  • 不需要反复调整SendGrid模板的逻辑,在应用侧构造模板入参时,直接从storeName中提取品牌值,同步传入对应品牌的logo地址(比如新增brandLogo字段),模板内直接通过{{ brandLogo }}引用即可,连4个条件判断都不需要写
  • 后续如果要更换logo、调整品牌与门店的映射关系,只需要修改应用侧的参数生成逻辑,完全不用打开SendGrid模板做版本迭代

注意事项

  • 字符串包含匹配的前提是品牌关键词没有互相包含关系,当前四个品牌名(Real One、Low Beam、Monte、Huskar Promo)是独立无重叠的,完全不会出现误匹配的问题
  • 匹配关键词不要设置得太泛,比如如果后续新增名称包含"Pro"的品牌,不要只用"Pro"做判断关键词,否则会和"Huskar Promo"的关键词重叠导致匹配错误

内容的提问来源于stack exchange,提问作者Nish Raman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 19:15:09