Как избежать вызова содержимого, когда два тега частично совпадают в Shopify

#shopify #liquid

#shopify #liquid

Вопрос:

В настоящее время я пытаюсь отобразить содержимое на основе тегов продуктов, которые назначены продуктам в Shopify.

Это работает нормально, но моя проблема в том, что у меня есть два тега, которые содержат частично одно и то же имя тега, поэтому я получаю оба набора содержимого, отображаемых во внешнем интерфейсе.

Один тег показывает обязательное поле «r-[tag-name]», а другой показывает то же поле, но оно не является обязательным «[tag-name]».

Очевидно, я знаю, что это связано с тем, что я использую ‘contains’, поэтому логика верна для обоих, когда применяется любой тег, но я пытался использовать ‘==’ (равно), но когда я это делаю, вообще ничего не появляется :/

Что я хотел бы знать, так это то, что мне нужно изменить, чтобы утверждение было истинным только в том случае, если существует тег, который точно совпадает с оператором if .

Я новичок в Liquid, поэтому буду признателен за любую помощь!

 <!--Convert the tags into a string by joining them with COMMA-->
{% assign productTags = product.tags | join: ', ' %}
<!--Now Check for the desired tag name-->

{% if productTags contains 'r-custom-name-one' %} 
      
<p class="line-item-property__field">
     <label for="name-one">Name One:</label>
     <input class="required" id="name-one" type="text" name="properties[Name One]">
</p>
{% endif %}
              
{% if productTags contains 'custom-name-one' %} 
<p class="line-item-property__field">
     <label for="name-one">Name One:</label>
     <input id="name-one" type="text" name="properties[Name One]">
</p>
{% endif %}
  

Комментарии:

1. Вы ищете точное совпадение с «пользовательским именем-один» в теге или ожидаете, что тег на продукте будет частично совпадать с «пользовательским именем-один»?

Ответ №1:

Мне нужно изменить так, чтобы утверждение было истинным только в том случае, если существует тег, который точно совпадает с оператором if

Это должно сделать это:

 {% for tag in product.tags %}
  {% if tag == 'r-custom-name-one' %}
    <p class="line-item-property__field">
      <label for="name-one">Name One:</label>
      <input class="required" id="name-one" type="text" name="properties[Name One]">
    </p>
    
    {% break %}
  {% endif %}
  
  {% if tag == 'custom-name-one' %}
    <p class="line-item-property__field">
    <label for="name-one">Name One:</label>
    <input id="name-one" type="text" name="properties[Name One]">
    </p>

    {% break %}
  {% endif %}
{% endfor %}
  

Я добавил {% break %} , который будет

Заставляет цикл останавливать итерацию при обнаружении break тега.

Я предположил, что после того, как тег найден, вам не нужно продолжать перебирать остальные теги!