tomk79 / px2-sitemapgs
为 Pickles2 添加通过 Google 表格编辑网站地图的功能。
Requires
- php: >=5.4.0
- google/apiclient: ^2.0
Requires (Dev)
- phpunit/phpunit: 4.1.*
- pickles2/px-fw-2.x: dev-develop
- tomk79/filesystem: ^1.0
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 开发者控制台操作
- 登录到 Google 开发者控制台 并创建一个项目。
- 从创建的项目中选择 "认证信息" 菜单,然后选择 "创建认证信息"。
- 选择 "服务帐户密钥"。
- 选择 "服务帐户" 下的 "新建服务帐户"。
- 输入任意服务帐户名称。(此帐户名称将是后来用作 Google 表格共享方的电子邮件地址)
- 在角色中选择 "项目 > 阅读者"。
- 在密钥类型中选择 "JSON"。
- 点击 "保存" 按钮后,将开始下载 JSON 文件,请保存。 (在此处,将其保存为
service-account.json
)
- 启用 "Google Sheets API"。
- 返回 "仪表板",选择 "API 和服务启用"。
- 在众多 API 中找到 "Google Sheets API",然后点击。
- 点击 "Google Sheets API" 页面上的 "启用" 按钮。
Google 驱动器操作
- 登录到 Google 驱动器 并创建一个 Google 表格。
- 打开 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的步骤有两种。
- 可以基于在浏览器中预览作为触发条件进行导入。之前更新的CSV将保持为插件选项
csv_expire
指定的时间(秒数),在此期限过后预览,CSV将更新。 - 可以通过执行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
- Tomoya Koyanagi tomk79@gmail.com
- 网站: http://www.pxt.jp/
- Twitter: @tomk79 http://twitter.com/tomk79/
开发者信息 - 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
的工作表。内容留空。