Создание CPT (Custom Post Type) -подобного объекта (такого как Wordpress) в Shopify для более удобного поиска в разделе - PullRequest
0 голосов
/ 02 мая 2019

Контекст: я пытаюсь создать раздел, который бы отображал на сайте аккордеон, в котором были бы перечислены имена отдельных членов бизнес-команды (т. Е. Отдел продаж, маркетинга и т. Д.), Их заголовок, изображение самого себя, и, возможно, URL-адрес, который приведет их к отдельной странице участника. На странице может быть несколько аккордеонов, поэтому мне нужно превратить их в блоки для облегчения рендеринга.

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

{% schema %}
    {
        "blocks": [
            "name": "Accordion"
            "settings": [
                {
                    "id": "accordion_name",
                    "type": "text",
                    "label": "Accordion Name"
                },
                {
                    "blocks": [

                    ]
                }
            ]
        ]
    }
{% endschema %}

{% stylesheet %}
{% endstylesheet %}

{% javascript %}
{% endjavascript %}

Проблема в том, что вы действительно не можете сделать дизайн вложенных блоков в Shopify, поэтому я решил создать объект, похожий на CPT (Custom Post Type), который будет хранить этих людей для меня (сродни Wordpress ). И затем, после этого, я могу просто импортировать данные, которые есть у этих вещей, в мой раздел как коллекцию (по крайней мере, вместо коллекции продуктов, это группа людей).

Мне просто интересно, возможно ли это в среде Shopify. Я пытался создать собственное приложение для этого (в крайнем случае использовать приложение в магазине), но я не хочу тратить время на разработку этого приложения только для того, чтобы понять, что оно никогда не будет работа в первую очередь.

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

Пожалуйста, учтите, что технически я впервые использую Shopify в качестве платформы.

Большое спасибо всем, кто ответит мне.

РЕДАКТИРОВАТЬ: Этот тип структуры блока заключен в нижний колонтитул.

1 Ответ

0 голосов
/ 02 мая 2019

В Shopify нет пользовательских типов записей, как в WordPress. Наиболее близким является блог, так как вы можете иметь несколько блогов вместо одного.

Если вы собираетесь использовать это на одной странице, вы можете использовать разные типы блоков.

Так, например, вы можете сделать что-то вроде этого:

<div class="accordion">
  {%- for block in section.blocks -%}
    {%- assign _block = block.settings -%}
    {%- case block.type -%}

      {%- when 'heading' -%}
        {%- assign block_title = _block.title -%}

        {%- unless forloop.first -%}
          </div><!-- /.accordion -->
          <div class="accordion">
        {%- endunless -%}

        <div class="accordion__head">
          {{ block_title }}
        </div><!-- /.accordion__head -->

      {%- when 'member' -%}
        {%- assign block_title = _block.title -%}
        {%- assign block_image = _block.image -%}
        {%- assign block_link = _block.link -%}

        <div class="accordion__user">
          {{ block_image | img_url: '150x150' | img_tag }}
          <h4>{{ title }}</h4>
          <a href="{{block_link}}">Read more</a>
        </div><!-- /.accordion content -->
    {%- endcase -%}
  {%- endfor -%}
</div><!-- /.accordion -->

{% schema %}
{
  "name": "Accordion",
  "blocks": [
    {
      "type": "heading",
      "name": "Heading",
      "settings": [
        {
          "type": "text",
          "id": "title",
          "label": "Title"
        }
      ]
    },
    {
      "type": "member",
      "name": "Member",
      "settings": [
        {
          "type": "text",
          "id": "title",
          "label": "Title"
        },
        {
          "type": "image_picker",
          "id": "image",
          "label": "Image"
        },
        {
          "type": "url",
          "id": "link",
          "label": "Link"
        }
      ]
    }
  ]
}
{% endschema %}

Где у вас есть 2 типа блоков, один для заголовка и один для члена.

Вы зацикливаете блоки, а когда у вас есть заголовок, вы закрываете и открываете аккордеон div со следующим кодом:

    {%- unless forloop.first -%}
      </div><!-- /.accordion -->
      <div class="accordion">
    {%- endunless -%}

Существуют и другие подходы, но это один из самых чистых способов для администратора.

...