首页 / 开发文档 / 推荐商家

推荐商家

前台标签与字段、后台录入与「自动获取」、主图三级回落、三条路由,以及几个必须避开的坑。

它能做什么

  • 列表页:一行行商家卡片(主图 + 名称 + 域名 + 一句话简介 + 浏览量)
  • 详细页:左侧大图,右侧「商家详情 / 联系方式 / 在线咨询 / 投诉与反馈 / 温馨提示」,下方标签页「商家介绍 · 用户评价」
  • 首页板块:勾了「首页推荐」的商家会出现在首页那一节
  • 咨询与投诉:访客填表 → 进后台留言 → 同时发通知邮件

后台怎么用

入口:后台左侧「栏目素材 → 推荐商家」。需要的权限项是 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 到商家网站。它不进整页缓存,所以计数是准的

咨询与投诉是怎么走通的

  1. 前台弹窗提交到 /message(这是只收 POST 的地址,用普通链接打开一定 404)
  2. 后台「留言」里出现一条,来源分别标为商家咨询 / 商家投诉
  3. 同时按「站点设置 → 邮件」里配的 SMTP 发一封通知到 notify_email

⚠️ 想收到通知,必须在站点设置里填「通知邮箱」;这个键为空时通知会静默不发,日志也不会报错。

必须避开的坑

坑说明
字段键不能用 content自定义表单里叫 content 的字段会被服务端静默丢弃(提交成功但正文不见了)。正文类字段请用 detail 之类的名字
实时截图来自第三方公开服务,无需密钥,但 SPA 或需要登录的站点常被拍成白屏;这类站点请自己上传主图。第一次请求时对方还在生成,会先返回一张占位图
首页是整页缓存的加完商家、改了「首页推荐」后,首页不会立刻变,要等缓存过期或手动清理
详细页的浏览量与列表不是一个数浏览量只在点「访问网站」时 +1(走 /merchants/go/<id>),不是打开详细页就加
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。