Как распечатать элементы с помощью цикла в Shopify? - PullRequest
0 голосов
/ 13 марта 2019

Я очень плохо знаком с Shopify и пытаюсь распечатать элементы из моего массива.Я ввел свой текст в текстовое поле с помощью Shopify CMS.Однако, когда я загружаю страницу в браузере, я вижу только пустую <ul>.Поэтому, что-то не так с моей петлей ниже, но я не могу понять это.Любая помощь приветствуется.

<div class="featured_item">
      <ul class="featured_item_list">
          {% for i in featured_items %}
          <li>
            <p>{{ i }}</p>
          </li>
          {% endfor %}
      </ul>
</div>


{% schema %}
  {
    "name": "Featured items",
    "class": "section section_homepage section_featured_items",
    "settings": [
        {
            "type": "text",
            "id": "itemOne",
            "label": "Item one text"
        },
        {
            "type": "text",
            "id": "itemTwo",
            "label": "Item two text"
        }
      ],
    "presets": [
        {
            "name": "Featured items",
            "category": "text"
        }
    ]
  }
{% endschema %}

{% stylesheet %}
{% endstylesheet %}

{% javascript %}
{% endjavascript %}

1 Ответ

2 голосов
/ 13 марта 2019

Вам нужно будет больше узнать о разделах и о том, как правильно их использовать: https://help.shopify.com/en/themes/development/sections

В данный момент вы пытаетесь зациклить ... ничего.

Нигде не назначается переменная featured_items, и даже если она существует, нет блоков (массив, который можно зациклить).

Когда вы находитесь в разделе и хотите получить определенное поле из схемы в этом разделе, вы всегда проходите через section.

Итак, на данный момент у вас есть следующее:

"settings": [
    {
        "type": "text",
        "id": "itemOne",
        "label": "Item one text"
    },
    {
        "type": "text",
        "id": "itemTwo",
        "label": "Item two text"
    }
],

Таким образом, вы должны позвонить section заранее, и если вы хотите получить поле itemOne, вы называете его примерно так section.settings.itemOne, так как itemOne присутствует в разделе настроек.

То же самое относится ко второму itemTwo, который должен называться section.settings.itemTwo.

<div class="featured_item">
      <ul class="featured_item_list">
        <li>
            <p>{{ section.settings.itemOne }}</p>
        </li>
        <li>
            <p>{{ section.settings.itemTwo }}</p>
        </li>
      </ul>
</div>

Но поскольку вы создаете воспроизводимый контент, на самом деле лучше использовать вместо него БЛОКИ.

Синтаксис схемы для блоков:

{% schema %}
  {
    "name": "Featured items",
    "class": "section section_homepage section_featured_items",
    "blocks": [
      {
        "type": "some_type",
        "name": "Some Type",
        "settings": [
          {
            "id": "content",
            "type": "text",
            "label": "Content"
          }
        ]
      }
    ],
    "presets": [
        {
          "name": "Featured items",
          "category": "text"
        }
   ]
  }
{% endschema %}

И затем, поскольку блоки на самом деле являются повторяемым содержимым, которое возвращает массив, вы вызываете section.blocks для цикла, и это становится так:

<div class="featured_item">
    <ul class="featured_item_list">
        {% for block in section.blocks %}
            <li>
            <p>{{ block.settings.content }}</p>
            </li>
        {% endfor %}
    </ul>
</div>

И теперь у вас есть повторяемые блоки, которые вы можете добавить несколько раз, чтобы создать динамический список вместо фиксированного числа.

Подумайте, читайте больше о разделах и о том, как их использовать, поскольку их гораздо больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...