如何用Shopify Liquid根据月份切换邮件HTML内容?
解决方案:基于月份切换邮件HTML内容(Shopify Liquid)
你可以利用Shopify Liquid的条件语句(case或if-else),结合已有的月份变量实现内容切换,以下是具体实现方式:
方法一:使用case语句(推荐多月份场景)
这种方式逻辑清晰,适合需要为多个月份定义不同内容的情况:
{% assign current_month = account.datetime | date: "%B" %} {% case current_month %} {% when "August" %} <!-- 八月对应的HTML内容 --> <div style="padding: 16px; background: #f5f5f5;"> <h3 style="margin: 0 0 8px;">八月夏季特惠</h3> <p style="margin: 0;">全场服饰满200减50,限时一周!</p> </div> {% when "September" %} <!-- 九月对应的HTML内容 --> <div style="padding: 16px; background: #e8f4f8;"> <h3 style="margin: 0 0 8px;">开学季专属福利</h3> <p style="margin: 0;">学生用户凭认证享全场7折,文具区额外满减!</p> </div> {% when "October" %} <!-- 可继续扩展其他月份 --> <div style="padding: 16px; background: #f9f0e6;"> <h3 style="margin: 0 0 8px;">秋季新品上市</h3> <p style="margin: 0;">新款外套首发,下单送定制围巾!</p> </div> {% else %} <!-- 未匹配到指定月份时显示的默认内容 --> <div style="padding: 16px; background: #ffffff;"> <h3 style="margin: 0 0 8px;">本月精选</h3> <p style="margin: 0;">浏览店铺发现更多惊喜优惠!</p> </div> {% endcase %}
方法二:使用if-else语句(适合少数月份场景)
如果只需要针对2-3个月份做内容切换,用if-else更简洁:
{% assign current_month = account.datetime | date: "%B" %} {% if current_month == "August" %} <div style="text-align: center;"> <img src="august-banner.jpg" alt="八月清仓" style="max-width: 100%;"> <p>点击查看夏季清仓清单 →</p> </div> {% elsif current_month == "September" %} <div style="text-align: center;"> <img src="september-banner.jpg" alt="开学季" style="max-width: 100%;"> <p>学生专属通道 →</p> </div> {% else %} <div style="text-align: center;"> <img src="default-banner.jpg" alt="本月推荐" style="max-width: 100%;"> </div> {% endif %}
关键注意事项
- 月份拼写匹配:确保
when或if条件中的月份名称和{{ account.datetime | date: "%B" }}输出的完全一致(英文月份首字母大写,比如"August"而非"august") - 变量有效性验证:在DotDigital后台测试
{{ account.datetime | date: "%B" }}是否能正确输出当前月份,避免因变量未定义导致逻辑失效 - 邮件兼容性:邮件HTML需使用内联样式,避免外部样式表,确保在主流邮件客户端(如Gmail、Outlook)中正常显示
内容的提问来源于stack exchange,提问作者Alex Green
相关产品推荐
相关产品推荐

