如何在Shopify中使用Liquid格式化电话号码?
Shopify 中通过 Liquid 实现电话号码格式化的方法
shop.phone 对象的默认输出格式完全跟随店铺后台的联系方式设置变动,Liquid 没有内置的电话号码格式化专用过滤器,需要通过自定义字符串处理逻辑实现统一的展示格式。
- 原始内容清洗
先将shop.phone输出内容中的所有非数字特殊字符(加号、横杠、括号、空格、点号等)全部移除,得到纯数字的号码串,作为后续格式化的统一基础,避免因后台设置变动(比如分隔符类型、前后空格)导致逻辑失效。示例代码:assign cleaned_phone = shop.phone | remove: '+' | remove: '-' | remove: '(' | remove: ')' | remove: ' ' | remove: '.' - 按规则拼接格式
基于清洗后的纯数字串长度做分支判断,拆分对应号码片段,拼接为目标展示格式。以最常用的北美10位本地号码格式为例:- 当清洗后号码长度为10位时,拆分片段拼接为
(XXX) XXX-XXXX格式,参考逻辑:{% if cleaned_phone.length == 10 %}{% assign area_code = cleaned_phone[0..2] %}{% assign prefix_num = cleaned_phone[3..5] %}{% assign line_num = cleaned_phone[6..9] %}{% assign formatted_phone = '(' | append: area_code | append: ') ' | append: prefix_num | append: '-' | append: line_num %}{% endif %} - 当清洗后号码长度为11位且首位为国家码1时,自动补上+1国家码前缀,再按上述规则拆分拼接。
- 当清洗后号码长度为10位时,拆分片段拼接为
- 增加兜底判断
如果清洗后的号码长度不符合预设的格式规则,直接输出原始shop.phone内容,避免号码展示错乱。
注意:如果店铺覆盖多个国家/地区的号码,需要提前为不同国家码匹配对应的格式化规则,不能硬套单一区域的号码格式。
内容的提问来源于stack exchange,提问作者DeFeNdog
相关产品推荐
相关产品推荐

