zantolov / zoogle-cms
此包的最新版本(dev-master)没有可用的许可信息。
dev-master
2021-03-18 20:06 UTC
Requires
- php: >=8.0
- ext-dom: *
- ext-json: *
- cocur/chain: ^0.9.0
- google/apiclient: ^2.2
- symfony/config: ^5.2
- symfony/css-selector: ^5.2
- symfony/dependency-injection: ^5.2
- symfony/dom-crawler: ^5.2
- symfony/http-kernel: ^5.2
- zantolov/toolbelt: @dev
This package is auto-updated.
Last update: 2024-09-19 23:19:42 UTC
README
此项目允许您使用 Google Docs 及其文件夹和文档来管理博客和/或内容门户。
项目提供所需的模型和服务
- 授权应用使用 Google Drive
- 查询 Google Drive 中的文件夹(类别)和文档(文章)
- 获取和处理 Google Docs 并将其转换为 HTML
- 内容处理(提取元数据、删除额外的 HTML 标签和属性等)
设置
1. 需要Composer包
composer require zantolov/zoogle-cms
2. 启用Symfony包
编辑 config/bundles.php
并添加
Zantolov\ZoogleCms\Infrastructure\Symfony\ZoogleCmsBundle::class => ['all' => true]
3. 获取 Google API 凭据
- 前往 https://console.developers.google.com/iam-admin/serviceaccounts
- 创建项目或选择现有项目
- 点击
创建服务帐户
- 将此服务帐户的权限添加为
所有者
- 为服务帐户创建 JSON 密钥并将其下载到
var/
(稍后将需要它) - 启用 Google Drive API
- 启用 Google Docs API
4. 设置所需的环境变量
创建本地、未跟踪的 .env
实例(例如 .env.dev.local
)并填写变量
GOOGLE_DRIVE_API_CLIENT_ID=YOUR CLIENT ID
GOOGLE_DRIVE_API_AUTH_FILE_PATH=/var/auth.json
GOOGLE_DRIVE_ROOT_DIRECTORY_ID=YOUR ROOT DIRECTORY ID
ZOOGLE_CACHE=1
GOOGLE_DRIVE_API_CLIENT_ID
- 从您下载的授权 JSON 文件中获取的client_id
值GOOGLE_DRIVE_API_AUTH_FILE_PATH
- 创建服务帐户时下载的 JSON 凭据文件的路径GOOGLE_DRIVE_ROOT_DIRECTORY_ID
- 将成为 CMS 根目录的 Google Drive 文件夹的 IDZOOGLE_CACHE
- 配置标志,告诉 Zoogle 是否缓存结果
缓存
每次请求都获取和处理文档是一项繁琐的工作。Zoogle CMS 提供了缓存客户端,它将只获取和处理一次内容,并将其存储在本地以供将来访问和加快加载速度。
@todo 缓存失效
如何获取根目录 ID?
- 在您的 Google Drive 上创建一个文件夹并使用浏览器打开它
- 查看以下格式的 URL:
https://drive.google.com/drive/u/0/folders/1123456AbCDeFGhIjKlMnB12233
- URL 的最后一个组件是文件夹 ID,
https://drive.google.com/drive/u/0/folders/{id}
5. 授予 Google Drive 根文件夹对服务帐户电子邮件的访问权限
- 在您的 Google Drive 中的根文件夹上右键单击并选择“共享”
- 将包含在 JSON 凭据文件中的
client_email
键下的电子邮件添加到与文件夹共享的用户列表中。查看权限就足够了
使用方法
一旦您已成功与您的 Google 项目关联的帐户共享 Google Drive 文件夹,Zoogle CMS 就可以访问所选根目录下的文件夹和文档。
在 Twig 中的简单使用
{% set document = zoogle_document('https://docs.google.com/document/d/{some id}/edit') %}
<h1>{{ document.title }}</h1>
<div class="page__image">
{{ document.firstImage|zoogle_element_html }}
</div>
{{ document.withoutFirstImage|zoogle_document_html }}
在 PHP 中的使用
列出子文件夹
列出文档
获取文档
将 Google 文档转换为模型对象
将文档模型对象转换为 HTML
配置
图像持久化
默认情况下,由 Google Docs API 暴露的图像将过期。为了确保图像将在您的网站上继续渲染,我们需要将其持久化。
Zoogle 随带由 Symfony Cache 组件提供的本地持久化适配器
要启用它,请将以下路由定义添加到您的 app/config/routes.yaml
zoogle_cms_image: path: /z/image/{filename} controller: Zantolov\ZoogleCms\Infrastructure\Controller\ImageController
Amazon S3图片持久化
@待办
自定义持久化
@待办