微信分享
页面标题、SEO 与微信分享操作说明
适用:系统管理员、前端/WAP 维护人员
相关更新方案:页面标题、SEO 与微信分享统一方案(2026-07-10)
旧版分享分析:微信分享功能使用说明
一、核心原则(必记)
- 页面
<title>= 微信分享标题(WAP 端统一,不允许两套规则)。 - 列表页:标题格式为 网站名 + 版块名(如「合肥市法律服务网资讯」)。
- 详情页:标题为 内容本身标题(文章标题、招标标题、活动标题等)。
- 商家主页:标题为 商家名称。
- 商家子版块:标题为 商家名称(版块名)(如「XX律所(地址)」)。
- 无分享图时:按 微信分享功能使用说明 — 页面首图 → 裁剪 API →
/attachs/wx.jpg。
二、总站后台操作
2.1 SEO 模板管理
路径:系统后台 → 设置 → SEO模板(/backstage/seo/index)
| 项目 | 说明 |
|---|---|
| 标签 seo_key | 格式:模块小写_方法小写,如 news_index、shop_index、life_index |
| SEO标题 | 支持变量 {sitename}、{city_name}、{title}、{cate_name} 等(与页面 seodatas 对应) |
| 作用范围 | 主要用于 固定列表页;商家详情、文章详情等 动态页由程序自动生成,不必在 SEO 表重复配置 |
| 搜索 | 顶部可按标签搜索,如 shop_detail |
| 分页 | 列表按 seo_key 字母序排列,便于查找 |
优先级(程序自动):
- Action 显式设置的页面标题(商家名、文章标题等)— 最高
- SEO 模板(
by_seo表,键module_action) - 站点默认名称(
site.sitename)
2.2 清理无效 SEO 模板
路径:SEO模板列表页左上角 → 清理无效模板
点击后系统自动删除:
- 空的
seo_key或空的seo_title - 重复的
seo_key(保留 ID 最小的一条)
等价 SQL 迁移:docs/sql/migrations/V20260710_002_seo_prune_invalid.sql(法律站 myfalvfuwuw、保安站 mybaoanfuwuw 各库执行一次)。
建议:清理后刷新列表,删除仍指向已下线栏目的无效模板(手动勾选 → 批量删除)。
2.3 微信分享默认设置
路径:系统后台 → 设置 → 微信相关(或站点配置中的微信项)
| 配置项 | 说明 |
|---|---|
| 启用微信分享默认设置 | 开启后,未单独配置的页面会使用后台默认标题/描述/图片 |
| 默认分享标题/描述/图片 | 全站兜底;商家页、详情页已在代码中强制使用页面标题(forcePageShare),不受此项覆盖 |
| JS-SDK | 需正确配置 appid、appsecret,否则微信内分享无效 |
三、各版块标题与分享规则
3.1 商家版块(WAP /wap/shop/、/wap/company/)
| 页面 | URL 示例 | 页面标题 / 分享标题 |
|---|---|---|
| 商家主页 | shop/detail/shop_id/810.html | 商家名称 |
| 地址 | shop/gps/shop_id/810.html | 商家名称(地址) |
| 资讯列表 | shop/news/shop_id/810.html | 商家名称(资讯页) |
| 资讯详情 | shop/news_detail/article_id/1938.html | 文章标题 |
| 活动列表 | shop/activity/shop_id/810.html | 商家名称(活动) |
| 预约 | shop/book/shop_id/810.html | 商家名称(预约) |
| 评价 / 相册 / 介绍 / 商城等 | 各子路径 | 商家名称(对应版块名) |
员工详情:员工名 - 商家名称
AI 助手(带 shop_id):商家名称(AI助手)
3.2 全站版块(WAP)
| 版块 | 列表页标题 | 详情页标题 |
|---|---|---|
| 资讯 | 网站名+资讯 | 文章标题 |
| 招标采购 | 网站名+招标采购 | 招标标题 |
| 招聘求职 | 网站名+招聘求职(或 Hub 自定义名) | 分类信息/职位标题 |
| 活动 | 网站名+活动 | 活动标题 |
| 分类信息 | 网站名+频道名 | 信息标题 |
| 职业人才 | 网站名+职业人才 | 职业名 - 昵称 |
| 附近招聘 | 网站名+附近招聘 | 职位标题 |
| 首页 | 网站名称 | — |
四、微信分享无图 / 多图规则(前端)
详细说明:微信分享逻辑与流程详细说明(含无图、多图、sharethumb 全流程)。
脚本:static/default/wap/js/wechat-share.js
- 服务端传入
imgUrl→ 优先使用(PHP 已指定则不再扫页面其他图)。 - 未传图 → 取 DOM 顺序第一张 有效
<img>(跳过data:/blob:)。 - 经
/wap/api/sharethumb?size=300&src=...居中裁成 300×300 JPEG。 - 仍无图 →
/attachs/wx.jpg。
多图:不会自动选最大/最合适的一张;详情页请在 PHP 显式传配图。
标题回退:服务端 wechatShare.title → 否则 document.title(因此页面 <title> 必须正确)。
五、开发与维护逻辑(技术人员)
5.1 数据流
Action 设置 mobile_title + setWechatShare
↓
CommonAction::display() → seo() 强制分享标题 = mobile_title
↓
WAP header:<title><{$mobile_title}></title>
↓
footer_share → wechat-share.js
5.2 常用方法(Wap CommonAction / ShopAction)
| 方法 | 用途 |
|---|---|
applySiteSectionShare($版块名, $链接参数) | 全站列表页 |
applyContentDetailShare($标题, $链接, $描述, $图片) | 全站详情页 |
applyShopSectionShare($shop_id, $版块名) | 商家子版块 |
initShopWechatShare($shop_id, $覆盖项) | 商家主页或自定义分享 |
wap_shop_section_title($商家名, $版块名) | 生成「商家名(版块名)」 |
wap_site_section_title($版块名, $网站名) | 生成「网站名+版块名」 |
5.3 新增 WAP 页面检查清单
- [ ] Action 中设置
$this->mobile_title或调用上述方法 - [ ] 详情页使用
forcePageShare => true - [ ] 模板使用
public:header(已统一读$mobile_title) - [ ] 列表页标题符合「网站名+版块名」
- [ ] 商家页符合「商家名(版块名)」
- [ ] 无图分享走 wx.jpg 规则
- [ ] 改动同步保安站
ba(见 Cursor 规则sync-to-ba-security-site)
5.4 关键文件
| 文件 | 作用 |
|---|---|
themes/default/Wap/public/header.html | WAP 页面 <title> |
Banyan/Lib/Action/Wap/CommonAction.class.php | seo()、分享辅助方法 |
Banyan/Lib/Action/Wap/ShopAction.class.php | 商家版块分享 |
static/default/wap/js/wechat-share.js | 微信 JS-SDK 分享 |
Banyan/Lib/Service/WechatShareService.class.php | 分享配置构建 |
Banyan/Backstage/seo/index.html | SEO 模板后台 |
六、生成 / 更新本帮助页
Markdown 源文件位于 docs/,注册于 Banyan/Lib/Service/Help/help_ops_manifest.php。
更新帮助 HTML 后请执行(项目根目录):
php tools/build_help_pages.php
成功输出 built=N;若报错 file not found,检查 manifest 中 file 路径是否与 docs/ 下文件名一致。
访问:/home/help/article/slug/page-title-seo-wechat-share-ops.html
七、验证清单(上线前)
| URL | 期望 <title> |
|---|---|
/wap/shop/detail/shop_id/8.html | 商家名称 |
/wap/shop/gps/shop_id/8.html | 商家名(地址) |
/wap/shop/news/shop_id/810.html | 商家名(资讯页) |
/wap/news/index.html | 网站名+资讯 |
/wap/tender/index.html | 网站名+招标采购 |
/wap/recruit/index.html | 网站名+招聘求职 |
微信内打开上述页面 → 分享给朋友 → 卡片标题应与 <title> 一致。
八、保安站(ba)说明
逻辑与法律站相同;SEO 清理、迁移在 mybaoanfuwuw 库单独执行。帮助文档中「律师/律所」示例在保安站对应为「保安员/安保公司」,代码路径一致。
