#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
.
Счастливого взлома!