如何在PHP Laravel中验证Shopify App Blocks的支持?
Laravel中验证Shopify App Blocks支持的实现方案
App Blocks仅兼容Shopify Online Store 2.0 主题,以下是两种在Laravel项目中验证支持状态的方法:
方法1:检查主主题的App Blocks支持性
通过Shopify Theme API获取店铺主主题的信息,直接查看supports_app_blocks字段:
use Osiset\ShopifyApp\Facades\ShopifyApp; // 获取当前授权的店铺实例 $shop = ShopifyApp::shop(); // 请求Shopify Theme API,指定返回所需字段 $apiResponse = ShopifyApp::api()->rest( 'GET', '/admin/api/2024-01/themes.json', ['fields' => 'id,title,role,supports_app_blocks'] ); // 筛选出当前使用的主主题 $mainTheme = collect($apiResponse['body']['themes'])->firstWhere('role', 'main'); // 判断是否支持App Blocks $supportsAppBlocks = $mainTheme && $mainTheme['supports_app_blocks'] === true; // 根据结果执行对应逻辑 if ($supportsAppBlocks) { // 支持App Blocks,加载相关功能 } else { // 不支持,提示用户切换到Online Store 2.0主题 }
方法2:验证店铺是否启用Online Store 2.0功能
先通过Shop API确认店铺已开启Online Store 2.0支持,再进一步验证主题:
use Osiset\ShopifyApp\Facades\ShopifyApp; $shop = ShopifyApp::shop(); // 请求Shop API获取店铺功能列表 $shopResponse = ShopifyApp::api()->rest( 'GET', '/admin/api/2024-01/shop.json', ['fields' => 'features'] ); $shopFeatures = $shopResponse['body']['shop']['features'] ?? []; // 检查店铺是否支持Online Store 2.0 $supportsOnlineStore20 = in_array('online_store_2.0', $shopFeatures); if ($supportsOnlineStore20) { // 店铺支持2.0,再执行方法1中的主题检查逻辑 } else { // 店铺未启用Online Store 2.0,无法使用App Blocks }
关键注意点
- 确保使用的Shopify API版本≥2021-01(该版本开始支持
supports_app_blocks字段) - 仅店铺支持Online Store 2.0还不够,必须主主题也支持App Blocks才能正常使用该功能
- 建议在应用的功能入口处添加验证逻辑,向用户明确提示不支持时的解决方案
内容的提问来源于stack exchange,提问作者Srinath Mahe
相关产品推荐
相关产品推荐

