详细介绍
十四个出口,
一条分享条
访客看完一篇文章,想转出去时总差一个按钮。这条分享条把 Facebook、X、WhatsApp、LinkedIn 到微信、微博、QQ空间一次摆好,还多给一个出口:把整页做成一张 750×1200 的海报,PC 可下载,手机长按保存。
- 版本 / 作者
- 1.1.0 · HMS
- 要求
- CMS 4.7+ / PHP 8.1+
- 平台
- 14 个(默认 10)
- 海报尺寸
- 750 × 1200
- 前端库
- qrious 本地内置
- 服务器依赖
- 无需 GD / Imagick
三个具体卡点,三个具体出口
先划边界:它是「分享出口」,不是「社媒运营台」——不接平台账号、不读别人主页、不代发帖。
访客顺手就关掉了
文章有价值,访客想发到 WhatsApp 或 LinkedIn,页面除了一个地址栏什么都没有。
一条分享条覆盖 14 个出口,勾选与排序在后台定;内嵌页底或全站浮动,两段代码各自复制一次。
只能让访客自己复制链接
微信不开放网页直接跳转,很多站干脆放弃这个渠道。
弹层二维码,扫码打开当前页;二维码由本地内置的 qrious 生成,不走外网服务。
一张手机截图什么都不带
访客截图发群里,既没有站点名,也没有可扫码的入口。
生成 750×1200 竖版海报:标题、描述、二维码、Logo、站点名、提示语;PC 下载,手机长按保存。
代码里有十四个,默认摆十个
默认启用:FB、X、WhatsApp、LinkedIn、Pinterest、Telegram、微博、QQ空间、微信、海报。Reddit、Line、Email、复制链接要自己去勾。
| 平台 | 动作 | 实际行为与适用 |
|---|---|---|
| share | 打开 sharer 分享对话框;欧美 B2B 主力渠道 | |
| X / Twitter | share | intent/tweet,标题与链接预填 |
| share | wa.me 直达,移动端最好用,外贸询盘常从这条来 | |
| share | sharing/share-offsite,工业与贸易客户集中 | |
| share | 需要封面图,适合产品图与目录 | |
| Telegram | share | t.me/share/url,东欧与中东客户常用 |
| share | 论坛型内容合适;默认关闭 | |
| Line | share | 日本 / 台湾市场;默认关闭 |
| share | mailto 预填标题与链接;默认关闭 | |
| 复制链接 | copy | 写剪贴板并提示;默认关闭 |
| 微信 | qr | 弹层二维码,扫码打开当前页;不能一键跳转,这是平台机制 |
| 微博 | share | 国内渠道,标题截断由平台决定 |
| QQ空间 | share | 国内渠道 |
| 生成海报 | poster | 前端合成竖版图,见第四节 |
形状、尺寸、位置,三样都不难调
后台下拉框选完保存即可;改完记得重新复制一次嵌入代码。
round · circle · square
圆角方形、圆形、直角方形三选一;尺寸小 / 中 / 大三档。主题色可改成任意 CSS 颜色,默认 #1677ff。按钮配色风格 brand(品牌色)或 mono(单色)。
内嵌两档,浮动两档
详情页底部 / 详情页顶部 / 侧边浮动左 / 侧边浮动右。浮动可设距顶像素,默认 120。浮动代码放公共模板一次,全站生效。
后端不校验这些值
保存时只对「距顶」做整数转换、「按钮风格」做空值回退,其余原样入库。正常从下拉框选没问题,但别用接口写非法值。
海报在前端画,服务器只转格式
canvas 画跨域图会污染画布,导出必报安全错误——所以插件让服务端先把图抓下来变成 base64。
| 海报参数 | 作用 | 默认 |
|---|---|---|
| 底色 | 没有背景图时铺底色 | #1e3a8a |
| 背景图 | 有则覆盖底色 | 空 |
| Logo | 海报上的品牌标记 | 空 |
| 默认封面 | 页面没有 og:image 时使用 | 空(内置占位图) |
| 站点名 | 海报底部署名 | 空 |
| 标题 / 描述字数 | 超长自动截断 | 40 / 90 字 |
| 二维码颜色 | 与主题呼应 | #1677ff |
| 提示语 | 二维码旁的一行字 | 长按识别二维码查看详情 |
服务端接口 m=poster 收到 head / cover / logo / bg 四个图片地址,抓取后转成 data URI 返回。不落盘、不存库、不产生新文件,也不需要 GD 或 Imagick。产出方式是 canvas 导出:PC 给「下载海报」按钮,手机提示长按保存。
每次点,都留一行能复盘的字
上报走 m=track,字段做白名单与截断;校验不过就拒收,不写库。
七个,都截断
platform、url(250)、title(190)、ip、referrer(250)、ua(250)、addtime。url 必须以 http(s) 开头,否则拒绝。
四次一页,五组数
总次数、被分享页面数(按 URL 去重)、今日、近 7 日、占比最高平台及百分比。
不等于真实外发
复制链接、生成海报、微信二维码都记一次分享。想看真实外发,按平台分开看。
三种嵌入方式,一个最常见的坑
嵌入代码是把当前设置「生成」出来的文本,不是实时读取。
详情页内嵌
方式 A 代码放 show.html 正文结束处,分享条读当前页标题、描述与 og:image。
全站浮动
先把位置改成浮动左/右,再把方式 B 放 header.html 或 footer.html,一次全站生效。
模板直接调
M('hmshare','hmshare')->embed_code();传入封面地址可让海报优先用这张图。
- 改了要重新复制
- 外观或平台设置改完,旧代码不会自动变,必须回「嵌入代码」重新复制替换。
- 日志只增不减
- 没有自动清理机制,高频站要自己按 addtime 定期清。
- 微信只能扫码
- 不支持 JS-SDK 直跳,需要公众号授权的场景本插件不覆盖。
- 海报尺寸固定
- 750×1200 一种,不支持多模板与自定义尺寸,也不落库、无下载统计。
- 无短链无 UTM
- 分享出去是原始 URL,渠道来源靠平台自己的 referrer。
- 统计可被刷
- 日志无 IP 去重与频控,恶意脚本能刷高数字(只影响数字)。