dynamic / silverstripe-shopify
为 Silverstripe 定制的 Shopify 店铺模块
Requires
- php: >=7.4 || >=8.0
- bramdeleeuw/silverstripe-schema: ^2.0.1
- gnikyt/basic-shopify-api: ^10.0
- littlegiant/silverstripe-catalogmanager: ^5.2
- silverstripe/recipe-cms: ^4.11
- symbiote/silverstripe-gridfieldextensions: ^3.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 16:31:53 UTC
README
为 Silverstripe 定制的 Shopify 店铺模块。
需求
- silverstripe/recipe-cms ^4.11
- bramdeleeuw/silverstripe-schema ^2.0
- littlegiant/silverstripe-catalogmanager ^5.2
- osiset/basic-shopify-api ^10.0
- symbiote/silverstripe-gridfieldextensions ^3.0
安装
composer require dynamic/silverstripe-shopify
注意 - 由于 osiset/basic-shopify-api
v10.0.6 版本的问题,如果您正在运行 PHP 7,我们建议要求使用 osiset/basic-shopify-api
的 10.0.5 版本。
许可证
请参阅 许可证
概述
Silverstripe Shopify 允许您使用 Silverstripe CMS 创建一个无头 Shopify 店铺。产品集合从 Shopify 导入,并作为 CMS 中的页面创建。使用 Shopify 购买按钮通过 Shopify 购物车和结账购买产品。
设置
创建一个私有应用
首先,确保在您的 Shopify 店铺中启用了 私有应用(默认情况下为禁用)。
在您的 Shopify 管理员界面中,从左侧导航栏点击 Apps
。页面加载完成后,滚动到页面底部并点击以下链接
在您的商店与开发者合作?管理私有应用
如果没有私有应用,请点击 创建新的私有应用
。否则,点击链接以使用您为 Silverstripe 网站想要的现有私有应用。
获取 API 密钥和设置权限
管理员 API
在管理员 API 部分,将以下权限设置为 读取访问
- 客户
- 订单
- 产品列表
- 产品
所有其他权限都是可选的,并且不是 Silverstripe Shopify 所必需的。
将以下密钥复制到配置中的相应变量
- API 密钥 >
api_key
- 密码 >
api_password
- 共享密钥 >
shared_secret
店面 API
在店面 API 部分,勾选以下复选框
允许此应用通过店面 API 访问您的店面数据
勾选以下权限框以启用 Silverstripe Shopify 所需的访问权限
读取产品、变体和集合
读取产品标签
读取产品及其变体的库存
读取和修改客户详情
读取客户标签
读取和修改结账
所有其他权限都是可选的,并且不是 Silverstripe Shopify 所必需的。
将以下密钥复制到配置中的相应变量
- 店面访问令牌 >
storefront_access_token
基本配置
Dynamic\Shopify\Client\ShopifyClient: api_key: 'YOUR_API_KEY' api_password: 'YOUR_API_PASSWORD' shared_secret: 'YOUR_API_SHARED_SECRET' storefront_access_token: 'YOUR_ACCESS_TOKEN' # for buy button shopify_domain: 'YOUR_SHOPIFY_DOMAIN' # mydomain.myshopify.com custom_domain: 'YOUR_CUSTOM_DOMAIN' # optional - checkout.example.com
使用 Multipass
Dynamic\Shopify\Client\ShopifyMultipass: multipass_secret: 'YOUR_MULTIPASS_SECRET'
导入产品
在设置完上述基本配置后,您可以通过 CLI 使用 ShopifyImportTask 导入 Shopify 产品和集合
vendor/bin/sake dev/tasks/ShopifyImportTask
或在浏览器中在 /dev/tasks/ShopifyImportTask
运行任务
用法
CMS
产品集合在 CMS 中作为页面创建。属于集合的产品将自动设置为网站树中该集合的子页面。如果产品属于多个集合,则 ShopifyProduct 页面将创建在列出的第一个集合下,后续集合将列出产品的虚拟页面。
将导入私有应用销售渠道中可用的所有产品和集合。
根据 Shopify 中设置的状态,将 Shopify 相关页面设置为草稿或已发布。对于产品,如果产品在 Shopify 中设置为活动状态,则将在 Silverstripe 中发布。
此模块创建了一个 CatalogPageAdmin,通过 ModelAdmin 来管理 Shopify 记录,而不仅仅是网站树。
ShopifyProduct页面也实现了来自schema.org的产品结构化数据。这为谷歌和其他搜索引擎的结果页面提供了更多显示信息。
主题
购物车包含
在您的顶级Page.ss模板中,在</body>
标签之前包含以下内容
<% include Cart %>
购物车配置选项
禁用购物车备注
PageController: showNote: false
设置备注字符限制(当备注启用时)
PageController: noteLimit: 123
注意:对于页面类型的特定配置,您可以按控制器类设置showNote
和noteLimit
值。
您还可以通过在ShopifyExtension.php
中的getCartOptions()
函数中通过扩展钩子updateCartOptions
来覆盖默认的购物车设置。
public function updateCartOptions(&$config)
{
$config['cart'] = [
'popup' => 1,
];
}
显示购买按钮
默认情况下,有3个包含文件用于显示不同版本的Shopify购买按钮
BuyButton
- 只是一个简单的添加到购物车按钮,没有其他产品信息BuyForm
- 一个典型的添加到购物车表单,非常适合ShopifyProduct页面BuyOverlay
- 一个添加到购物车按钮,它可以打开一个包含来自Shopify的产品信息的覆盖层
要显示购买按钮,只需在您的模板中包含上述文件中的一个即可。
购买按钮配置选项
模块中购买按钮的默认设置禁用了iframe选项,并移除了大多数购买按钮内容和样式。上述包含文件旨在与从Shopify导入到数据库中的图片和标题一起使用,并且禁用iframe后,它使您能够完全控制购买按钮的样式。
但是,您可以通过在ShopifyProduct.php
中的扩展钩子覆盖上述每个购买按钮类型的默认设置。
getButtonOptions()
具有updateButtonOptions(&$buttonOptions)
getFormOptions()
具有updateFormOptions(&$formOptions)
getOverlayOptions()
具有updateOverlayOptions(&$overlayOptions)
public function updateButtonOptions(&$buttonOptions)
{
$buttonOptions['product'] = [
'iframe' => true,
'contents' => [
'title' => true,
'variantTitle' => false,
'price' => true,
'description' => true,
'quantity' => false,
'img' => true,
],
'width' => '100%',
'styles' => [
'button' => [
'color' => '#ffffff',
'background-color' => '#279989',
':hover' => [
'color' => '#ffffff',
'background-color' => '#C5E86C',
],
],
]
];
}
高级
产品印象跟踪
可以通过向渲染产品时使用的html标签添加数据属性来跟踪产品印象。data-sku
是唯一必需的数据属性,但也可以添加data-title
、data-category
和data-vendor
。
<div class="product__content" data-sku="$SKU" data-title="$Title" data-category="$Category.Title" data-vendor="$Vendor"></div>
维护者
致谢
受到xddesigners之前工作的启发。
错误追踪器
错误在该存储库的问题部分进行跟踪。在提交问题之前,请阅读现有问题以确保您的问题独特。
如果问题看起来像是一个新的错误
- 创建一个新的问题
- 描述重现您问题的步骤和预期结果。单元测试、屏幕截图和屏幕录制在这里可能会有所帮助。
- 尽可能详细地描述您的环境:SilverStripe版本、浏览器、PHP版本、操作系统、安装的任何SilverStripe模块。
请直接向模块维护者报告安全问题。请勿在错误追踪器中提交安全问题。
开发和贡献
如果您想为模块做出贡献,请确保您发起一个拉取请求并与模块维护者进行讨论。