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') '') '&')}}

注意:根据新信息编辑了上一行,将其全部合并为一行。