tomk79/px2-sitemapgs

为 Pickles2 添加通过 Google 表格编辑网站地图的功能。

0.0.1 2018-05-02 20:21 UTC

This package is auto-updated.

Last update: 2024-09-25 16:14:51 UTC


README

为 Pickles2 添加通过 Google 表格编辑网站地图的功能。

出力されたサイトマップのイメージ

原本的 Pickles 2 网站地图是以 CSV 格式描述的。CSV 是最简单和基本的数据格式之一,对于计算机处理来说很容易处理,但对于人类编辑来说可能不方便。此插件引入后,可以与 Google 表格协同工作,从而实现更直观和图形化的编辑。

  • 可以直接读取 Google 表格上编辑的网站地图。
    • 在访问时,会定期自动读取。可以使用 csv_expire 选项以秒为单位设置更新间隔。
    • 可以使用 PX 命令 ?PX=sitemapgs.gs2csv 手动更新。
    • 可以使用 PX 命令 ?PX=sitemapgs.csv2gs 将当前网站地图 CSV 的内容输出到 Google 表格中。(将创建带有日期的新表格进行输出。要实际使用此表格,请将表格名称更改为 sitemap
  • 可以使用视觉层次结构表示页面层次结构(logical_path)。
  • 可以使用 Google 表格中的带颜色单元格或文本装饰等编辑功能来安排漂亮的表格。
  • 网站地图的设置在 Google 表格的 A1 单元格中。
    • 设置示例: row_definition=8&row_data_start=9&skip_empty_col=20
    • row_definition:定义行号
    • row_data_start:数据行开始行号
    • skip_empty_col:如果定义行有值的列,则读取后续列的数量
  • 当在 A 列找到字符串 EndOfData 时,将不会扫描该行以下的行。可以自由地添加注释栏或页面计数器等。
  • 将扩展列 **delete_flg 设置为 1,则不会输出到 CSV 中。
  • 使用 sitemap 表格的内容。不读取其他表格。

准备工作

本节将介绍为从插件访问 Google 表格所需的事先准备。

Google 开发者控制台操作

  1. 登录到 Google 开发者控制台 并创建一个项目。
  2. 从创建的项目中选择 "认证信息" 菜单,然后选择 "创建认证信息"。
    • 选择 "服务帐户密钥"。
    • 选择 "服务帐户" 下的 "新建服务帐户"。
      • 输入任意服务帐户名称。(此帐户名称将是后来用作 Google 表格共享方的电子邮件地址)
      • 在角色中选择 "项目 > 阅读者"。
    • 在密钥类型中选择 "JSON"。
    • 点击 "保存" 按钮后,将开始下载 JSON 文件,请保存。 (在此处,将其保存为 service-account.json
  3. 启用 "Google Sheets API"。
    • 返回 "仪表板",选择 "API 和服务启用"。
    • 在众多 API 中找到 "Google Sheets API",然后点击。
    • 点击 "Google Sheets API" 页面上的 "启用" 按钮。

Google 驱动器操作

  1. 登录到 Google 驱动器 并创建一个 Google 表格。
  2. 打开 Google 表格的共享设置,将其与服务帐户共享(在 Google 开发者控制台创建)。
    • service-account.json 中的 client_email 中包含的电子邮件地址共享。
    • 授权编辑权限。

保存 service-account.json 和 Google 表格的 ID。这些信息将在后续的插件选项中使用。

Google 表格的 URL https://docs.google.com/spreadsheets/d/xxxxxxxx/edit#gid=0 中,xxxxxxxx 的部分是表格 ID。

安装 - Install

1. 在 composer.json 中添加 tomk79/px2-sitemapgs

将 "tomk79/px2-sitemapgs" 添加到 "require" 项。

{
	"require": {
		"tomk79/px2-sitemapgs": "^0.0.1"
	},
}

添加后,请勿忘记执行 composer update 以反映更改。

$ composer update

2. 配置 service-account.json

配置 Google 开发者控制台创建的 service-account.json。放置位置可以是项目可以访问的任何位置。由于这是一个用于认证的文件,因此请将其放置在不会意外发布的位置。在此处,我们将其放置在 ./px-files/service-account.json

3. 在 config.php 中添加功能

编辑设置文件 config.php(通常为 ./px-files/config.php)。在 before_sitemap 的某个位置(例如最后)添加 tomk79\pickles2\sitemap_gs\main::exec

// funcs: Before sitemap
$conf->funcs->before_sitemap = array(
	// PX=config
	'picklesFramework2\commands\config::register' ,

	// PX=phpinfo
	'picklesFramework2\commands\phpinfo::register' ,

	// PX=clearcache
	'picklesFramework2\commands\clearcache::register' ,

	// sitemapGs
	'tomk79\pickles2\sitemap_gs\main::exec('.json_encode(array(
		// `service-account.json` のパス
		'google_application_credentials' => './px-files/service-account.json',

		// CSVファイルの有効期限 (秒)
		// 60 と設定した場合、 CSVファイルのタイムスタンプから 60秒以上経過していたら、
		// Googleスプレッドシートから再読み込みします。
		// false を設定した場合、自然更新されなくなります。
		'csv_expire' => 60*5, // 5分ごとに再読み込み
	)).')',
);

如果使用 JSON 格式编辑 Pickles 2 设置,请在相应的位置添加。

如果 service-account.json 的配置位置不同,请适当地修改 google_application_credentials 的路径。

如果已经引入 pickles2/px2-sitemapexcel (tomk79\pickles2\sitemap_excel\pickles_sitemap_excel::exec),则请删除或更改设置以避免使用相同文件。有关设置方法,请参阅 pickles2/px2-sitemapexcel 的 README

设置网站地图目录权限

在 macOS 或 Linux 系统上可能需要此操作。

$ cd {$documentRoot}
$ chmod -R 777 ./px-files/sitemaps

5. 在网站地图目录中放置 sitemap.gsheet

在 Pickles 2 网站地图文件夹 px-files/sitemaps/ 中创建一个扩展名为 .gsheet 的文件。此文件名应与 .csv 文件名相对应。例如,对应于 sitemap.csv 的文件名是 sitemap.gsheet

.gsheet 的内容是以下 JSON 文件。这是 Google Drive 应用程序(备份和同步)将本地磁盘与文件同步时创建的文件。 tomk79/px2-sitemapgs 将引用其中的 doc_id 值。

xxxxxxx 处填写表格 ID。

{
    "url": "https://docs.google.com/open?id=xxxxxxx",
    "doc_id": "xxxxxxx",
    "email": "hogefuga@example.com"
}

6. 在 Google 表格上初始化网站地图

打开终端(在 Windows 中为命令提示符)并执行以下 PX 命令。

$ php .px_execute.php "/?PX=sitemapgs.push"

此命令将当前网站地图 CSV 的内容转换为 Google 表格并上传。将创建一个名为 sitemap-YYYYMMDD-HHiiss 的新表格。请确认此表格的内容是否与预期的网站地图格式相符。

出力されたサイトマップのイメージ

确认后,将工作表名称更改为 sitemap。此操作会使工作表变为活动状态。

使用方法 - Usage

从Google电子表格上的网站地图导入本地网站地图CSV的步骤有两种。

  1. 可以基于在浏览器中预览作为触发条件进行导入。之前更新的CSV将保持为插件选项 csv_expire 指定的时间(秒数),在此期限过后预览,CSV将更新。
  2. 可以通过执行PX命令 ?PX=sitemapgs.pull 手动导入。在此步骤中,不会受到 csv_expire 期限的影响,并强制导入。

PX命令

  • ?PX=sitemapgs.gs2csv, ?PX=sitemapgs.pull:手动执行从Google电子表格的sitemap工作表到CSV的转换。
  • ?PX=sitemapgs.csv2gs, ?PX=sitemapgs.push:手动执行从CSV到Google电子表格的转换。将创建名为 sitemap-YYYYMMDD-HHiiss 的工作表,并将输出内容存储其中。要实际使用此工作表,请将工作表名称更改为 sitemap

相关链接

更新日志 - Change log

tomk79/px2-sitemapgs 0.0.1 (2018年5月3日)

  • 首次发布。

许可证 - License

MIT许可证

作者 - Author

开发者信息 - for Developer

测试 - Test

$ php ./vendor/phpunit/phpunit/phpunit

在执行测试命令之前,请做好以下准备。

  • 将用于测试的 service-account.json 保存到 tests/testdata/data/service-account.json
  • tests/testdata/data/sitemap.gsheet 中包含的 doc_id 用要测试的Google电子表格的ID覆盖。
  • 在要测试的Google电子表格中创建名为 sitemap 的工作表。内容留空。