浏览文章

文章信息

Shopify app 检查主题是否启用嵌入式应用块 block | check shopify embed block is enable withor 4

代码

// 用 REST Admin API 检查 settings_data.json
letisAppEmbedEnabled = false;
letappEmbedHandle = 'app-embed';
letappApiKey = process.env.SHOPIFY_API_KEY || "";
try {
// 1. 获取当前主题ID
constthemesRes = awaitadmin.rest.get({
path: 'themes',
query: { role: 'main' }
});
constthemesResString =JSON.parse(awaitthemesRes.text());
constmainTheme = themesResString?.themes?.[0];
constthemeId = mainTheme?.id;

// 2. 获取 settings_data.json
constsettingsRes = awaitadmin.rest.get({
path: `themes/${themeId}/assets`,
query: { 'asset[key]': 'config/settings_data.json' }
});
constsettingsResString =JSON.parse(awaitsettingsRes.text());
constsettingsData = JSON.parse(settingsResString?.asset?.value) || {};
// 3. 检查 app embed block 是否启用
constblocks = settingsData?.current?.blocks || {};
for (constblockIdinblocks) {
constblock = blocks[blockId];
if (block.type.startsWith('shopify://apps//blocks/app-embed/') && block.disabled !== true) {
isAppEmbedEnabled = true;
break;
}
}
} catch (e) {
console.log('忽略异常,默认未启用',e);
// 忽略异常,默认未启用
}
 
 
核心逻辑是使用 rest检查

原创