前往主页Meilisearch 标志
返回文章
2024年8月19日

使用 Blazity 构建您的 Next.js Shopify 店面

了解如何使用 Next.js 和 Blazity 商务启动器构建 Shopify 店面。

Laurent Cazanove
Laurent Cazanove开发者体验工程师StriftCodes
Build your Next.js Shopify storefront with Blazity

本指南将引导您为 Shopify 商务平台设置 Next.js 店面。我们将使用 Blazity 开发的开源 Enterprise Ecommerce 启动器,该启动器附带 CLI,可让您快速上手。

概述

下图概述了我们应用程序的架构。

Architecture of an application developed with Enterprise Ecommerce start

应用程序堆栈由 4 个关键组件组成

  • 数据源 — Shopify 管理员后台、个性化工具等。
  • 搜索引擎 — Meilisearch
  • 全栈应用 — Next.js 应用程序
  • 第三方集成 — 分析、客户关系管理等。

在此架构中,Meilisearch 数据库聚合来自多个来源的数据,使其可供 Next.js 应用程序访问。

我们的最终应用程序将如下所示:实时预览

先决条件

本指南需要

设置

此设置阶段为您提供了应用程序与 Meilisearch 和您的 Shopify 商店交互所需的凭据。

这些凭据与安装阶段所需的环境变量相匹配。为清楚起见,本指南将使用“✅”表情符号来标记每个此类变量。

感谢 Blazity 提供的说明。如果您遇到问题,请查阅 Blazity 文档

创建 Shopify 商店

如果您还没有 Shopify 商店,请访问 Shopify 并创建一个新商店。Shopify 为每个商店关联一个唯一的 ID,称为 商店域名

要查找您的 Shopify 商店域名,请前往 设置 > 域名。您的商店域名如下所示:your-domain.myshopify.com

Shopify 商店域名

安装 Shopify Headless

在 Shopify 应用商店中,找到 Headless 应用程序并安装。安装后,点击 创建店面

接下来,我们将更新 API 访问。在 管理 API 访问 部分,点击 店面 API 旁的 管理

编辑店面 API 权限以添加以下内容

  • unauthenticated_read_product_inventory
  • unauthenticated_read_customer_tags

保存权限后,您可以复制**私有访问令牌**。

Shopify 应用店面 API 令牌

创建 Shopify 应用

现在,我们将为我们的商店创建一个 Shopify 应用。Shopify 应用允许您为您的商店构建自定义集成。此应用将使我们能够获取 API 密钥,以读取和管理 Shopify 商店中的数据。

创建 Shopify 应用的步骤:

  • 导航到您商店的 Shopify 管理后台
  • 打开商店的 设置 并导航到 应用和销售渠道 标签页
  • 点击 开发应用
  • 如果有提示,请按照步骤允许为您的商店开发自定义应用
  • 创建一个应用并输入名称,例如“Next.js 应用”

创建应用后,导航到 API 凭据标签页以找到您的 Shopify 应用的 API 密钥(不是 API 密钥秘密!)

Shopify 应用 API 密钥

配置 Shopify Admin API 密钥

Shopify 应用使用两组密钥

  • 一个 **管理员 API 密钥** — 用于管理 Shopify 后台,例如编辑您的产品目录
  • 一个 **店面 API 密钥** — 用于读取产品目录、创建购物车等

我们可以在 Shopify 应用的 配置 标签页中配置这些 API 密钥的访问范围。在此部分中,我们将启用 Admin API 密钥所需的范围。

要配置 Admin API 密钥的范围,请遵循以下步骤:

  • Admin API 集成 部分,点击 配置
  • 启用以下范围:
    • write_product_listings
    • read_product_listings
    • read_products
    • write_products
  • Webhook 订阅 下,选择 2024-01 API 版本
  • 保存 :)

自本指南发布以来,API 版本可能已更改。我们建议查阅 Blazity 文档

定义了令牌 API 范围后,我们可以返回到 API 凭据 标签页并安装我们的应用。点击 安装应用 以生成您的 API 访问令牌。

安装 Shopify 应用后,您将获得您的 Admin API 访问令牌。出于安全原因,此令牌只会向您显示 一次 — **请务必保存它**。

Shopify 应用 Admin API 令牌

创建您的 Meilisearch 数据库

Meilisearch 是一个开源搜索引擎,提供全文、向量和混合搜索功能。我们的 Shopify 产品数据将与 Meilisearch 同步,使前端应用能够为最终用户提供快速、相关的搜索结果。

如果您没有 Meilisearch Cloud 账户,请创建一个Meilisearch Cloud账户。如有必要,您可以先了解如何开始使用 Meilisearch Cloud

喜欢自托管?了解如何本地安装 Meilisearch

首先,创建一个新的 项目,例如“Shopify 商店”。这将创建一个新的 Meilisearch 数据库,大约需要几秒钟完成。

然后,您可以导航到项目设置页面,找到您的 数据库 URL(您的主机)和 默认 Admin API 密钥

Meilisearch 主机 URL

Meilisearch API 令牌

我们建议在此步骤启用分析和监控,这样您以后无需更改主机。

配置您的 Meilisearch

创建数据库后,我们将创建索引。您可以为它们选择任何名称,但您需要相应地配置您的环境变量。让我们创建两个索引:

  • 我们的产品索引,例如 products
  • 我们的产品类别索引,例如 categories

Meilisearch 产品索引名称

Meilisearch 类别索引名称

创建索引后,我们现在可以配置它们。Meilisearch 的默认设置适用于大多数情况。对于每个索引,我们只配置可过滤属性和可排序属性。

产品索引 — 可过滤属性

[
	"collections",
	"collections.handle",
	"collections.id",
	"flatOptions",
	"handle",
	"minPrice",
	"tags",
	"variants.availableForSale",
	"vendor",
	"hierarchicalCategories",
	"hierarchicalCategories.lvl0",
	"hierarchicalCategories.lvl1",
	"hierarchicalCategories.lvl2",
	"avgRating"
]

产品索引 — 可排序属性

[
	"minPrice",
	"updatedAtTimestamp",
	"avgRating"
]

类别索引 — 可过滤属性

[
	"handle",
	"id"
]

所有其他属性设置可以保留其默认值。

安装

掌握所有凭据后,我们准备启动安装向导。让我们使用 Blazity 的 commerce CLI 创建项目。

# with NPM
npm create commerce

# with Yarn
yarn create commerce

第一个提示将要求您选择要启用的服务。对于本指南,我们只启用默认值:Shopify 和 Meilisearch。

然后,CLI 将要求您提供一系列凭据。如果您遵循了“设置”部分,您应该已经拥有所有必要的凭据。提供所有凭据后,CLI 将在新的文件夹中搭建您的项目。

创建后,导航到您的项目目录。您的 apps/web/.env.local 应该如下所示

# apps/web/.env.local

SHOPIFY_STOREFRONT_ACCESS_TOKEN=shpat_a-very-long-token
SHOPIFY_ADMIN_ACCESS_TOKEN=shpat_another-very-long-token
SHOPIFY_STORE_DOMAIN=your-domain.myshopify.com
SHOPIFY_APP_API_SECRET_KEY=a-32-characters-long-api-key
SHOPIFY_HIERARCHICAL_NAV_HANDLE=hierarchical-categories
MEILISEARCH_PRODUCTS_INDEX=products
MEILISEARCH_CATEGORIES_INDEX=categories
MEILISEARCH_ADMIN_KEY=your-meilisearch-admin-api-key
MEILISEARCH_HOST=https://edge.meilisearch.com
LIVE_URL=https://your-domain.myshopify.com
FLAGS_SECRET=randomly-generated-secret
CRON_SECRET=another-randomly-generated-secret

同步 Meilisearch 和 Shopify

Blazity 提供了一个 CLI 用于同步 Shopify 和 Meilisearch 之间的数据。在本节中,我们将看到如何使用 commerce-cli 实现此目的。

要将您的 Shopify 数据与 Meilisearch 同步,请导航到您的项目文件夹并运行

npx commerce-cli@latest sync

此命令将从您的 Shopify 商店拉取所有必要数据,并将其同步到您的 Meilisearch 数据库中。

此外,commerce-cli可以帮助您配置 webhook,以使您的 Meilisearch 始终保持同步。

启动您的应用

初始化应用程序并同步 Shopify 和 Meilisearch 之间的数据后,您就可以启动应用程序了。

要在开发模式下启动您的应用程序,请运行

# with NPM
npm run dev

# with Yarn
yarn dev

就是这样!您可以在 http://localhost:3000 访问您的应用程序 🎉

您也可以在此处查看实时示例:https://commerce.blazity.com/

进一步探索

本指南并未涵盖 Blazity 模板中的所有可用功能。如需更高级的配置,您可以访问Blazity 文档,了解如何设置分层类别、实现高可伸缩重定向等。

此外,以下资源可帮助您将新的 Shopify 商店与 Meilisearch 和 Next.js 集成


订阅我们的每月新闻通讯,了解 Meilisearch 的最新动态。要了解 Meilisearch 的未来并帮助塑造它,请查看我们的路线图并参与我们的产品讨论

如有其他需求,请在 Discord 上加入我们的开发者社区。

Meilisearch indexes embeddings 7x faster with binary quantization

Meilisearch 使用二进制量化将嵌入索引速度提高 7 倍

通过在向量存储 Arroy 中实现二进制量化,在保持搜索相关性和效率的同时,大大减少了大型嵌入的磁盘空间使用和索引时间。

Tamo
Tamo2024年11月29日
How to add AI-powered search to a React app

如何为 React 应用添加 AI 驱动的搜索

使用 Meilisearch 的 AI 驱动搜索构建一个 React 电影搜索和推荐应用。

Carolina Ferreira
Carolina Ferreira2024年9月24日
Meilisearch is too slow

Meilisearch 太慢了

在这篇博客文章中,我们探讨了 Meilisearch 文档索引器所需的增强功能。我们将讨论当前的索引引擎、其缺点以及优化性能的新技术。

Clément Renault
Clément Renault2024年8月20日