Shopify ПОМЕЩАЕТ вызов API с длинным HTML-содержимым

#php #shopify #put #shopify-app #shopify-api

#php #Shopify #помещает #Shopify-приложение #Shopify-api

Вопрос:

есть ли возможность создать новый раздел, отправив содержимое файла с помощью Shopify api? я хочу включить содержимое определенного файла вместо того, чтобы записывать все это под тегом value в моем вызове. как я могу создать новый раздел, который также имеет длинный код и схему

 PUT /admin/api/2021-01/themes/828155753/assets.json
{
  "asset": {
    "key": "templates/index.liquid",
    "value": "<img src='backsoon-postit.png'><p>We are busy updating the store for you and will be back within the hour.</p>"
  }
}
 

я протестировал следующий вариант, но он не работает должным образом:

 $asset_file = array(
  "asset" => array (
    "key" => "sections/radd.liquid",
    "value" => file_get_contents("test.txt")
  )
);
 

это содержимое моего тестового файла:

 <div id="flx"></div>

{% schema %}
{
  "name": "story",
  "settings": [
    {
      "type": "text",
      "id": "section_title",
      "label": {
        "cs": "Nadpis",
        "da": "Overskrift",
        "de": "Titel",
        "en": "Heading",
        "es": "Título",
        "fi": "Otsake",
        "fr": "En-tête",
        "it": "Heading",
        "ja": "見出し",
        "ko": "제목",
        "nb": "Overskrift",
        "nl": "Kop",
        "pl": "Nagłówek",
        "pt-BR": "Título",
        "pt-PT": "Título",
        "sv": "Rubrik",
        "th": "ส่วนหัว",
        "tr": "Başlık",
        "vi": "Tiêu đề",
        "zh-CN": "标题",
        "zh-TW": "標題"
      }
    }
   ],"presets": [
    {
      "name": "story",
      "category": {
        "cs": "Pokročilé rozvržení",
        "da": "Avanceret layout",
        "de": "Komplizierteres Layout",
        "en": "Advanced layout",
        "es": "Diseño avanzado",
        "fi": "Monimutkaisempi layout",
        "fr": "Mise en page avancée",
        "it": "Layout avanzato",
        "ja": "高度なレイアウト",
        "ko": "고급 레이아웃",
        "nb": "Avansert oppsett",
        "nl": "Geavanceerde opmaak",
        "pl": "Zaawansowany układ",
        "pt-BR": "Layout avançado",
        "pt-PT": "Esquema avançado",
        "sv": "Avancerad layout",
        "th": "เลย์เอาท์ขั้นสูง",
        "tr": "Gelişmiş düzen",
        "vi": "Bố cục nâng cao",
        "zh-CN": "高级布局",
        "zh-TW": "進階版面配置"
      }
    }
 ]
}
{% endschema %}
 

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

1. Я думаю, что вы создаете файл на своем сервере и загружаете его с помощью asset API, это проще, чем писать.

2. Да, @Onkar прав, раздел темы считается ценным, эта конечная точка должна помочь.

3. @KarimTarek я использую api assets, вы можете видеть, что я выполняю вызов PUT для assets.json

4. Какую ошибку вы получаете от Shopify? Способ загрузки такого файла заключается в передаче строки для значения. Вы уверены test.txt правильно ли читается?

Ответ №1:

Этот фрагмент кода на Ruby должен пролить больше света на это

 def add_theme_code_snippet(theme_id:, type:, name:, code:)
    options = {
      query: {
        asset: {
          key: "#{type.downcase}s/#{name}.liquid",
          value: code
        }
      },
      basic_auth: basic_auth
    }

    res = HTTParty.put( "#{shopify_shop_api_url}/themes/#{theme_id}/assets.json", options )
    handle_shopify_response(response: res)
end
 

Чтобы загрузить раздел, ключ ресурса (он же. имя файла) необходимо указать имя каталога типа фрагмента кода, который вы загружаете, например, если я загружаю фрагмент кода с именем boo в snippets каталог, ключ (имя файла) ресурса, который я отправляю в API, должен быть snippets/boo.liquid в вашем случае, если вы хотите отправить раздел,затем вы должны включить sections/ в свой атрибут / свойство ключа вашего актива, чтобы это выглядело так sections/file_name.liquid .

Счастливого взлома!