Umami 演示

如何在本地运行 Umami 演示。


Drupal

  1. 创建一个新的 Drupal 项目
composer create-project drupal/recommended-project umami
  1. 编辑 composer.json 文件并在 extra 下添加以下补丁。
"extra": {
"patches": {
"drupal/subrequests": {
"Get same results on different request": "https://www.drupal.org/files/issues/2019-07-18/change_request_type-63049395-09.patch"
},
"drupal/decoupled_router": {
"Unable to resolve path on node in other language than default": "https://www.drupal.org/files/issues/2021-05-05/3111456-34.patch"
}
},
}
  1. 添加依赖项
composer require drupal/next drupal/jsonapi_menu_items drupal/jsonapi_views 'drupal/jsonapi_resources:^1.0@beta'
  1. 安装 Drupal。确保选择 **演示:Umami 美食杂志(实验性)** 作为安装配置文件。

    为了快速安装,您也可以使用 quick-start 命令

php -d memory_limit=256M ./web/core/scripts/drupal quick-start demo_umami
  1. 启用以下模块
  • 下一步
  • 下一步 JSON:API
  • JSON:API 菜单项
  • JSON:API 视图

Next.js

  1. 获取 Next.js 代码副本
git clone https://github.com/chapter-three/next-example-umami
  1. 安装依赖项
yarn install
  1. .env.example 复制到 .env.local 并更新这些值以指向您的 Drupal 网站
NEXT_PUBLIC_DRUPAL_BASE_URL=http://drupal.test NEXT_IMAGE_DOMAIN=drupal.test
  1. 启动开发服务器
yarn dev
  1. 访问 http://localhost:3000 以查看 Next.js 网站。

如何启用身份验证

我们使用 simple_oauth 模块进行身份验证。

  1. 访问 /admin/config/people/simple_oauth
  2. 点击 **生成密钥**。
  3. 输入 sites/default/files/private 作为 **密钥目录** 并点击 **生成**。
  4. 访问 /admin/config/services/consumer 并编辑默认客户端。
  5. 在 **新密钥** 下输入 weDKc7PD845kq49JfPeYmsZ48e 并 **保存**。
  6. 使用以下内容更新您的 .env.local
# Required
NEXT_PUBLIC_DRUPAL_BASE_URL=http://localhost:8888
NEXT_IMAGE_DOMAIN=localhost
+ # Authentication (Bearer)
+ NEXTAUTH_SECRET=zdauNuBL7lLAHT9zIpxExCThVHSSOfIwouGOhr5cjWQ
+ NEXTAUTH_URL=http://localhost:3000
+ DRUPAL_CLIENT_ID=YOUR_DEFAULT_CLIENT_ID_HERE
+ DRUPAL_CLIENT_SECRET=weDKc7PD845kq49JfPeYmsZ48e
  1. 重新启动 Next.js 开发服务器。
  2. 如果您访问 http://localhost:3000/login,您现在应该可以使用 Drupal 管理员用户名和密码登录。

如何启用 JSON:API 写入操作

  1. 访问 /admin/config/services/jsonapi
  2. 在 **允许的操作** 下,选择 **接受所有 JSON:API 创建、读取、更新和删除操作。**。
  3. 保存配置

您现在可以访问 http://localhost:3000/articles/new 来创建一篇新文章。