我获得的数据仅包含 SKU 编号。我正在尝试弄清楚如何将这些 SKU 编号链接到 Shopify 中的产品变体,而无需实际的产品 ID 编号。
示例数据:
<Inventory ItemNumber="100B3001-B-01">
<ItemStatus Status="Avail" Quantity="0" />
</Inventory>
<Inventory ItemNumber="100B3001-B-02">
<ItemStatus Status="Avail" Quantity="0" />
</Inventory>
<Inventory ItemNumber="100B3001-B-03">
<ItemStatus Status="Avail" Quantity="-1" />
<ItemStatus Status="Alloc" Quantity="1" />
</Inventory>
<Inventory ItemNumber="100B3001-B-04">
<ItemStatus Status="Avail" Quantity="-1" />
<ItemStatus Status="Alloc" Quantity="1" />
</Inventory>
一种是创建
配送服务并提供一个 URL,Shopify 将在该 URL 中致电您询问 SKU 的库存水平;这可能是最简单的解决方案,前提是您有一个可以公开此类回调的 Web 服务器。
第二种方法是定期翻阅所有
编辑:这是一个不可靠的选项,我曾经将其用作最后的手段。我不建议使用它,但我会将其留在这里,以防有人发现它有帮助。
您可以使用此API端点:
/admin/products/search.json?query=sku:abc123
我只在浏览器中使用过它,但找不到任何相关文档。而且它可能随时停止工作。
function getProductInfo(productID) {
console.log("Getting product info for " + productID + "...");
$.ajax({
url: window.Shopify.routes.root + 'admin/products/search.json?query=sku:' + productID,
method: "GET",
success: function (data) {
let pid = data.products['0'].id;
let pdpUrl = window.Shopify.routes.root + 'products/' + data.products['0'].handle;
let imgid = data.products['0'].image.src;
let quantity = data.products['0'].variants['0'].inventory_quantity;
if (quantity == 0) {
$('form[data-pid=' + productID + '] button[type=submit]').text('OUT OF STOCK').attr('onclick', 'event.preventDefault();').css("background-color", "#c6c6c6");;
console.log("PRODUCT SOLD OUT: " + productID)
}
$('a[data-sku=' + productID + '] img').css('background-image', "url('" + imgid + "')");
$('a[data-sku=' + productID + ']').attr('href', pdpUrl);
$('form input[value=' + productID + ']').attr('value', pid);
return;
},
error: function (error) {
console.log('Cannot retrieve data from SKU ' + sku);
}
});
};
如果您希望在函数运行后操作 DOM,我还留下了一些成功操作,以便为你们提供一个良好的起点。请注意,这将获取产品的父 ID,如果您想获取产品变体 ID,则只需更改此:
let pid = data.products['0'].id;
对此:
let pid = data.products['0'].variants['0'].id;
注意:如果没有与产品关联的变体,则会抛出未定义的错误。
response = await shopifyApi.post(
"https://" + this?.ecommerce?.shopify?.domain + "/api/2024-01/graphql.json",
`{
products(first: 1, query:"${SKU}") {
nodes {
id
title
handle
description
variants(first: 10) {
nodes {
id
sku
title
price {
amount
currencyCode
}
availableForSale
}
}
}
}
}`
);
*.myshopify.com/search?view=json&q=sku:SKUID