推荐商家
前台标签与字段、后台录入与「自动获取」、主图三级回落、三条路由,以及几个必须避开的坑。
它能做什么
- 列表页:一行行商家卡片(主图 + 名称 + 域名 + 一句话简介 + 浏览量)
- 详细页:左侧大图,右侧「商家详情 / 联系方式 / 在线咨询 / 投诉与反馈 / 温馨提示」,下方标签页「商家介绍 · 用户评价」
- 首页板块:勾了「首页推荐」的商家会出现在首页那一节
- 咨询与投诉:访客填表 → 进后台留言 → 同时发通知邮件
后台怎么用
入口:后台左侧「栏目素材 → 推荐商家」。需要的权限项是 merchant.manage。
列表页只管看与删除/隐藏;新增与编辑在独立页面(跟内容、轮播一致)。
| 字段 | 说明 |
|---|---|
| 商家地址 | 必填。填域名即可,会自动补 https |
| 自定义标题 | 留空则用「自动获取」抓回来的标题 |
| 自定义图标 / 主图 | 上传的图优先,没上传就用填的地址,都没有才按商家地址生成实时截图 |
| 一句话简介 | 列表卡片上显示,最多 120 字 |
| 排序 / 前台显示 / 首页板块 | 小的排前面;隐藏后前台列表与详细页都不再出现;「首页推荐」控制首页那一节 |
| 邮箱 / 电话 / 地址 / 服务时间 | 留空则详细页对应项整块不出现 |
| 用户评价 | 一行一条,详细页按引用块展示 |
「自动获取」是什么
点一次,服务器就去商家地址抓回网页标题、网站图标、主题色,写进「自动获取到的值」。
- 它只在你点按钮时执行;页面渲染时不会去请求对方站点(否则既慢,又等于拿访客流量骚扰别人)
- 「回填」会把抓到的值写进空的输入框。⚠️ 一旦写进「自定义标题」,它就不再跟随对方网站变化 —— 想保持跟随就把该框清空
- 抓取有安全限制:只允许 http/https、拒绝内网与本机地址、不跟随跳转、超时 8 秒、响应体截断
前台标签
{naicha:merchants num="60"}
<a href="{merchant.url}">
<img src="{merchant.show_shot}" alt="{merchant.show_name}">
<b>{merchant.show_name}</b>
<span>{merchant.intro}</span>
<span>浏览 {merchant.hits} 次</span>
</a>
{/naicha:merchants}
只要首页那一节,加 featured="1":{naicha:merchants featured="1" num="8"}
| 字段 | 含义 |
|---|---|
{merchant.id} | 商家 ID,用来拼详细页与出口地址 |
{merchant.show_name} | 展示名:自定义标题 → 自动标题 → 网址(三级回落,已在服务端算好) |
{merchant.show_logo} / {merchant.show_shot} | 展示用的图标 / 主图(同样是回落后的结果) |
{merchant.intro} | 一句话简介 |
{merchant.host} | 域名(不含协议) |
{merchant.hits} | 浏览量 |
{merchant.url} | 商家原始网址 |
三条路由
| 地址 | 用途 |
|---|---|
/merchants | 列表页 |
/merchants/<id> | 商家详细页 |
/merchants/go/<id> | 出站跳转:先给浏览量 +1 再 302 到商家网站。它不进整页缓存,所以计数是准的 |
咨询与投诉是怎么走通的
- 前台弹窗提交到
/message(这是只收 POST 的地址,用普通链接打开一定 404) - 后台「留言」里出现一条,来源分别标为商家咨询 / 商家投诉
- 同时按「站点设置 → 邮件」里配的 SMTP 发一封通知到
notify_email
⚠️ 想收到通知,必须在站点设置里填「通知邮箱」;这个键为空时通知会静默不发,日志也不会报错。
必须避开的坑
| 坑 | 说明 |
|---|---|
字段键不能用 content | 自定义表单里叫 content 的字段会被服务端静默丢弃(提交成功但正文不见了)。正文类字段请用 detail 之类的名字 |
| 实时截图来自第三方 | 公开服务,无需密钥,但 SPA 或需要登录的站点常被拍成白屏;这类站点请自己上传主图。第一次请求时对方还在生成,会先返回一张占位图 |
| 首页是整页缓存的 | 加完商家、改了「首页推荐」后,首页不会立刻变,要等缓存过期或手动清理 |
| 详细页的浏览量与列表不是一个数 | 浏览量只在点「访问网站」时 +1(走 /merchants/go/<id>),不是打开详细页就加 |
