zantolov/zoogle-cms

此包的最新版本(dev-master)没有可用的许可信息。

dev-master 2021-03-18 20:06 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 凭据

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 文件夹的 ID
  • ZOOGLE_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图片持久化

@待办

自定义持久化

@待办