Files
geo/integrations/pbootcms/Install.md
T
root 88c37e50b2
Frontend CI / Frontend (push) Successful in 3m57s
Backend CI / Backend (push) Failing after 6m43s
feat(enterprise-site): add PbootCMS enterprise site publisher
Introduce a new enterprise-site publishing channel that lets tenants push
articles to self-hosted PbootCMS sites alongside the existing media supply
flow.

Backend (server/internal/tenant):
- enterprise_site_service: CRUD, ping, category sync, and article publish
- enterprise_site_pbootcms: PbootCMS API client integration
- enterprise_site_crypto: encrypt/decrypt stored site credentials
- enterprise_site_handler + routes under /enterprise-sites
- migrations for the enterprise site publisher tables
- config: add SERVER_PUBLIC_BASE_URL (Server.PublicBaseURL) for callbacks
- article/media services adjusted to support the publish flow

Frontend (apps/admin-web):
- PublishArticleModal & ArticlePublishStatus: enterprise-site publish UI
- MediaView: manage enterprise sites and categories
- api + shared-types: enterprise site endpoints and types
- http-client: add PATCH method support

Integrations:
- pbootcms GeoPublisher controller plugin + install guide
- docs/enterprise-site-publisher-v1.md design doc
2026-06-06 13:06:14 +08:00

176 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PBootCMS GeoPublisher 安装说明
## 1. 放置文件
把本目录中的整个 `apps` 目录复制到客户 PBootCMS 网站根目录:
```text
{PBootCMS_ROOT}/apps
```
最终应存在:
```text
{PBootCMS_ROOT}/apps/api/controller/GeoPublisherController.php
{PBootCMS_ROOT}/apps/api/controller/AiseoController.php
```
这个文件只依赖 PBootCMS 原生 `core\basic\Controller``core\basic\Model``ay_content``ay_content_sort``ay_model`,不需要改后台代码,也不需要安装额外数据库表。
## 2. 开启 PBootCMS API
登录 PBootCMS 后台:
```text
全局配置 -> 配置参数 -> API
```
开启:
```text
api_open = 1
api_auth = 1
api_appid = 自定义 AppID
api_secret = 自定义密钥
```
Geo SaaS 绑定站点时填写:
```text
CMS 类型:PBootCMS
网站域名:https://www.example.com
AppID:后台 api_appid
Secret:后台 api_secret
```
## 3. 签名规则
每次请求都带:
```text
appid={api_appid}
timestamp={当前 Unix 秒级时间戳}
signature=md5(md5(appid + api_secret + timestamp))
```
示例:
```php
$signature = md5(md5($appid . $secret . $timestamp));
```
插件默认允许 300 秒时间差,便于 SaaS 服务器和客户服务器存在轻微时钟偏差。
## 4. 连通性测试
推荐入口:
```bash
curl "https://www.example.com/api.php?p=/GeoPublisher/ping&appid=APPID&timestamp=TIMESTAMP&signature=SIGNATURE"
```
如果站点 rewrite 已启用,也支持:
```bash
curl "https://www.example.com/api/GeoPublisher/ping?appid=APPID&timestamp=TIMESTAMP&signature=SIGNATURE"
```
成功返回:
```json
{
"code": 1,
"data": {
"cms_type": "pbootcms",
"plugin_version": "1.0.0",
"site_url": "https://www.example.com"
},
"msg": ""
}
```
## 5. 栏目同步
默认同步 PBootCMS 文章模型 `mcode=2` 的可用栏目:
```bash
curl "https://www.example.com/api.php?p=/GeoPublisher/categories&appid=APPID&timestamp=TIMESTAMP&signature=SIGNATURE&mcode=2"
```
兼容旧插件参数:
```text
model_hash=2
```
## 6. 发布文章
推荐使用 `POST JSON`
```bash
curl -X POST "https://www.example.com/api/GeoPublisher/publish?appid=APPID&timestamp=TIMESTAMP&signature=SIGNATURE" \
-H "Content-Type: application/json" \
-d '{
"scode": "5",
"title": "企业新闻标题",
"content": "<p>正文内容</p>",
"keywords": "关键词1,关键词2",
"description": "摘要",
"author": "Geo SaaS",
"source": "企业官网",
"status": 1
}'
```
核心字段:
```text
scode/category_id PBootCMS 栏目编码,必填
title 标题,必填
content HTML 正文,必填
status 1 发布,0 草稿
ico 缩略图,支持远程 URL 自动下载
pics 多图,支持逗号字符串或数组
date 发布时间,支持 Unix 时间戳或日期字符串
filename 自定义 URL 名称,可选
tags/keywords/description 可选
```
文章正文中的远程图片、封面 `ico`、多图 `pics` 会先下载到 PBootCMS 本地:
```text
/static/upload/image/YYYYMMDD/geo_*.jpg
```
如果图片下载或保存失败,接口会返回失败,不会把 SaaS 平台图片链接写进 PBootCMS 正文。
## 7. 更新与状态
```text
POST /api.php?p=/GeoPublisher/update
GET /api.php?p=/GeoPublisher/status&id={content_id}
```
更新接口字段和发布接口一致,额外必填:
```text
id = PBootCMS 内容 ID
```
## 8. 旧插件兼容接口
插件保留:
```text
/api.php?p=/GeoPublisher/categoryLists
/api.php?p=/GeoPublisher/articleAdd
/api.php?p=/Aiseo/categoryLists
/api.php?p=/Aiseo/articleAdd
```
用于兼容历史 `AiseoController.php` 风格调用。新 SaaS 侧建议统一使用:
```text
ping / categories / publish / update / status
```