BigCommerce Handlebars 仅将值转换为整数
BigCommerce Handlebars Convert Value to Integer Only
我在 BigCommerce 中的产品有一个名为“特殊”的自定义字段,我需要将这些字段的值转换为类别页面上的整数以便订购(使用 CSS)。它们不能按其他任何方式排序……它必须按值进行数字排序。并非所有产品都有此自定义字段(这些将位于订购列表的末尾)。其中一些包含字母数字值,我只需要将其转换为整数。此外,有些包含一个符号(例如:14&18),我只需要第一个数字。
{{#filter custom_fields 'Special' property='name'}}
{{#if value}}
<!-- Add Class -->
{{/if}}
{{#else}}
<!-- Standard Class -->
{{/else}}
{{/filter}}
根据该信息,我怎样才能将字符串转换为整数并在出现 & 符号时取第一个数字?除非绝对必要,否则我对使用 JavaScript 不感兴趣。
更新
有没有比这样更简单的替换多个字符的方法...
{{#replace "A" value}}{{else}}
{{#replace "a" value}}{{else}}
{{#replace "B" value}}{{else}}
{{#replace "b" value}}{{else}}
{{#replace "C" value}}{{else}}
{{#replace "c" value}}{{else}}
{{#replace "D" value}}{{else}}
{{#replace "d" value}}{{else}}
{{#replace "E" value}}{{else}}
{{#replace "e" value}}{{else}}
{{#replace " " value}}{{else}}
{{value}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
另外,split
会去哪里?
过滤器的工作方式是return将所有匹配的值作为一个数组,然后循环遍历。这意味着如果某些产品没有此自定义字段,它们将不会在过滤器内显示任何代码。因此,我们需要将它们放在过滤器本身的 else 块中。
{{#filter custom_fields 'Special' property='name'}}
<!-- Add Class -->
{{else}}
<!-- Standard Class -->
{{/filter}}
在有&符号的情况下,要获得第一个数字很容易。我们使用 first 和 split 助手:{{first (split value '&')}}
最后,去掉字母可能是最难的部分。您最好的选择是使用拆分和连接或替换。但是,您需要为每个字母执行此操作:
{{first (split (join (split (join (split (join (split (lowercase value) 'a') '') 'b') '') 'c') '') '&')}}
注意:根据新信息编辑了上一行,将其全部合并为一行。
我在 BigCommerce 中的产品有一个名为“特殊”的自定义字段,我需要将这些字段的值转换为类别页面上的整数以便订购(使用 CSS)。它们不能按其他任何方式排序……它必须按值进行数字排序。并非所有产品都有此自定义字段(这些将位于订购列表的末尾)。其中一些包含字母数字值,我只需要将其转换为整数。此外,有些包含一个符号(例如:14&18),我只需要第一个数字。
{{#filter custom_fields 'Special' property='name'}}
{{#if value}}
<!-- Add Class -->
{{/if}}
{{#else}}
<!-- Standard Class -->
{{/else}}
{{/filter}}
根据该信息,我怎样才能将字符串转换为整数并在出现 & 符号时取第一个数字?除非绝对必要,否则我对使用 JavaScript 不感兴趣。
更新
有没有比这样更简单的替换多个字符的方法...
{{#replace "A" value}}{{else}}
{{#replace "a" value}}{{else}}
{{#replace "B" value}}{{else}}
{{#replace "b" value}}{{else}}
{{#replace "C" value}}{{else}}
{{#replace "c" value}}{{else}}
{{#replace "D" value}}{{else}}
{{#replace "d" value}}{{else}}
{{#replace "E" value}}{{else}}
{{#replace "e" value}}{{else}}
{{#replace " " value}}{{else}}
{{value}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
{{/replace}}
另外,split
会去哪里?
过滤器的工作方式是return将所有匹配的值作为一个数组,然后循环遍历。这意味着如果某些产品没有此自定义字段,它们将不会在过滤器内显示任何代码。因此,我们需要将它们放在过滤器本身的 else 块中。
{{#filter custom_fields 'Special' property='name'}}
<!-- Add Class -->
{{else}}
<!-- Standard Class -->
{{/filter}}
在有&符号的情况下,要获得第一个数字很容易。我们使用 first 和 split 助手:{{first (split value '&')}}
最后,去掉字母可能是最难的部分。您最好的选择是使用拆分和连接或替换。但是,您需要为每个字母执行此操作:
{{first (split (join (split (join (split (join (split (lowercase value) 'a') '') 'b') '') 'c') '') '&')}}
注意:根据新信息编辑了上一行,将其全部合并为一行。