帮助首页 > 网站更新修复说明 · 微信相关 > 页面标题、SEO 与微信分享统一方案(2026-07-10)

页面标题、SEO 与微信分享统一方案(2026-07-10)

页面标题、SEO 与微信分享统一方案(2026-07-10)

一、问题根因

WAP 公共头模板 themes/default/Wap/public/header.html 原先写死为「城市名 + 站点名」,未读取 Action 设置的 $mobile_title

因此即使 ShopAction::initShopWechatShare() 已设置商家名,浏览器 <title> 仍显示「合肥市法律服务网」等站点名。

微信分享 JS(static/default/wap/js/wechat-share.js)在服务端未传标题时会回退到 document.title,页面标题错误会导致分享标题一并错误。

二、统一规则

1. 页面标题 = 微信分享标题

  • 每个 Action 设置 $this->mobile_title
  • CommonAction::seo() 在输出前强制 wechatShare.title = mobile_title
  • 所有 WAP header 的 <title> 统一为:<{$mobile_title|default=$CONFIG['site']['sitename']}>

2. 商家版块(shop / company)

页面标题格式示例
商家主页 detail商家名称安徽中特(六安)律师事务所
商家子版块商家名称(版块名)安徽中特(六安)律师事务所(地址)
商家资讯列表 news商家名称(资讯页)同上
商家资讯详情 news_detail文章标题普法宣传进社区 反诈护民暖人心
活动详情 activity/detail活动标题活动名称
员工详情 workerDetail员工名 - 商家名张三 - XX律所

辅助函数:wap_shop_section_title($shopName, $sectionLabel)商家名(版块名)

3. 全站版块

页面标题格式
列表页网站名 + 版块名(wap_site_section_title
详情页内容标题(文章/招标/分类信息标题等)

涉及:资讯 News、招标 Tender、招聘 Recruit、分类信息 Life、活动 Activity、首页 Index

4. 无图分享规则

沿用 help/article/slug/wechat-share.htmlwechat-share.js

  1. Action 有图 → config_weixin_img() 传给 imgUrl
  2. 无图 → 不传 imgUrl
  3. 前端:页面第一张有效 <img>/wap/api/sharethumb 裁剪 → 仍无图则 /attachs/wx.jpg

三、代码改动摘要

模板层

  • themes/default/Wap/public/header.htmlheadernewsheadernewsdetailheaderlife 等:统一读 $mobile_title

CommonAction

  • 移除 _initialize() 中空的 setWechatShare(),避免先用站点默认覆盖
  • seo():有 mobile_title 时强制同步微信分享标题与描述

ShopAction

  • 各子版块调用 applyShopSectionShare($shop_id, '版块名')initShopWechatShare()
  • 已覆盖:detail、gps、评价、预约、活动、相册、介绍、资讯、优惠券、商城、分类信息、招标、二维码、团购、商品、外卖、优惠买单、认领、分店等

全站 Action

  • NewsActionTenderActionRecruitActionActivityActionLifeActionIndexAction 设置列表/详情标题

四、SEO 后台整合

优先级

  1. Action 显式 mobile_title(商家名、文章标题等动态页)
  2. by_seo 表模板(module_action 键,如 news_index
  3. 站点默认 site.sitename

数据清理

执行迁移 docs/sql/migrations/V20260710_002_seo_prune_invalid.sql

  • 删除空 seo_key、空 seo_title
  • 删除重复 seo_key(保留 seo_id 最小的一条)

后台 backstage/seo/index 列表已按 seo_key asc 排序,便于分页管理。

五、验证清单

URL期望标题
/wap/shop/detail/shop_id/8.html商家名称
/wap/shop/gps/shop_id/8.html商家名(地址)
/wap/shop/news/shop_id/810.html商家名(资讯页)
/wap/shop/news_detail/article_id/1938.html文章标题
/wap/news/index.html网站名+资讯
/wap/tender/index.html网站名+招标采购

刷新方式:浏览器 Ctrl+F5 强刷;微信内可重新打开链接测试分享卡片。

六、保安站 ba 同步说明

逻辑与模板两端一致;保安站数据库 mybaoanfuwuw 需单独执行上述 SQL 迁移。文案示例按保安站用语,代码路径相同。

操作说明(管理员/运维):见帮助 页面标题、SEO 与微信分享操作说明(slug: page-title-seo-wechat-share-ops)。

七、第二轮补全(2026-07-10 续)

新增 CommonAction 辅助方法

  • applySiteSectionShare($sectionLabel, $linkParams, $route):全站列表页「网站名+版块名」
  • applyContentDetailShare($title, $link, $desc, $imgUrl):详情页标题即分享标题

已补全模块

模块列表详情
附近招聘 Nearwork网站名+附近招聘职位标题
职业人才 Career网站名+职业人才职业名 - 昵称
分类信息 Life/channel网站名+频道名(沿用 detail)
商家列表 Shop/index网站名+商家
AI助手 Ai商家名(AI助手)或全站 AI

SEO 后台

backstage/seo/index 增加「清理无效模板」按钮,调用 SeoAction::pruneInvalid(),等价于迁移 V20260710_002 的清理逻辑。

模板

  • life/detail.html 去掉手写 $mobile_title,统一走 Action + header
copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1