Shopify Dawn主题JSON模板中添加自定义表单字段如何避免硬编码ID
表单ID生成逻辑
新版Dawn主题的商品表单ID采用固定规则拼接生成:product-form-{{ section.id }},你看到的template--14290791497780__main这串值就是商品页主section的全局唯一ID,会随着模板修改、section迁移自动变化,所以硬编码的写法很容易失效。
动态引用表单ID的解决方案
你不需要跨区块引用其他属性,Custom Liquid区块和生成表单的buy_buttons区块同属于商品页主section,共享section上下文,直接用以下两种方法替换硬编码的form属性值即可:
方法1:直接调用Dawn预定义变量
Dawn的商品主section默认已经预定义了product_form_id变量,直接调用即可:
把你的textarea代码中的form="product-form-template--14302685823028__main"
替换为form="{{ product_form_id }}"
完整的自定义Liquid代码如下:
<p class="line-item-property__field"> <label for="engraving">Engraving</label> <p> <textarea id="engraving" name="properties[Engraving]" form="{{ product_form_id }}"></textarea> </p> </p>
方法2:通用拼接写法(兼容性更强)
如果部分版本Dawn不支持预定义变量,也可以手动按规则拼接ID,效果完全一致:form="product-form-{{ section.id }}"
以上两种写法都可以自动匹配当前表单的ID,更换模板、调整section结构都不需要修改代码。
内容的提问来源于stack exchange,提问作者heathkit
相关产品推荐
相关产品推荐

