官方不提供现金交易,线下交易风险自担,请仔细鉴别!
xnx_block_user 首页会员区块
首页中栏会员展示卡片(位于帖子区块 xnx_block_post 之下,同一注入点按 hooks_rank 排序):推荐会员 + 最新/活跃/土豪会员榜单。推荐会员版块支持积分上墙——管理员设 uid,未满坑位用户可购买自己上墙,到期自动下架。由旧插件 xnx_home_block 的会员侧拆分演进而来(安装时自动迁移旧配置)。
功能
会员 4 个 Tab:推荐会员(recommend)/ 最新会员(new,按注册时间)/ 活跃会员(active,按发帖数)/ 土豪会员(rich,按积分字段),后台多选启用 + 序号排序,每榜 10 人(产品定死)
土豪榜排序键可选积分类型 credits / golds / rmbs(白名单校验后才作排序键)
榜单排除封禁用户(ban_type=2);头像走
avatar_component_from_data(含系统默认头像、用户组框色),显示名用user_find_by_uids批量取推荐会员位:管理员手动 uid(按配置顺序)在前,购买记录(未过期)补足到坑位上限(坑位数 1-50 可配,默认 10);购买者显示剩余天数,手动配置不过期
上墙购买:登录用户一键上墙自己(已在墙上则提示),CreditsService 扣积分(credits/golds/rmbs,行锁+事务+流水),0 = 免费;时效制(默认 7 天),到期查询侧过滤自动下架
数据接口
xnx_block_user_api游客可访问:榜单缓存 5 分钟(CacheHelper),推荐会员与上墙状态实时计算不走缓存
文件结构
plugin/xnx_block_user/
├── conf.json
├── install.php / uninstall.php / upgrade.php
│ ├── install:建 xnx_block_user_rec 表;迁移旧插件 xnx_home_block 的 credits_type/member_tabs(show_members 关闭时保持会员卡隐藏)
│ └── upgrade:幂等补表
├── api.php # GET JSON:members 榜单 + recommend 推荐会员 + buy 状态(case xnx_block_user_api)
├── buy.php # GET 上墙信息 / POST 购买上墙(case xnx_block_user_buy,CsrfService 幂等复检)
├── setting.php # 后台设置:basic / wall 两 Tab(plugin-setting-xnx_block_user-<tab>)
├── model/BlockUserService.php # 榜单查询/推荐位合并/上墙购买/设置归一化
├── hook/
│ ├── index_main_start.htm # 首页中栏注入会员卡模板(hooks_rank=0,排在帖子区块之下)
│ ├── index_route_case_end.php # 注册 api / buy 前台路由
│ ├── model_inc_file.php # Service 注入 model 加载列表
│ └── lang_{zh-cn,zh-tw,en-us}_bbs.php
├── view/htm/
│ ├── block_user.htm # 前台外壳(PHP 渲染骨架,JS 拉数据填充)
│ └── setting_basic.htm / setting_wall.htm
├── static/ css/block_user.css, js/block_user.js # 原生 JS IIFE 幂等(htmx 替换 #body 后重建)
└── lang/{zh-cn,zh-tw,en-us}.php
数据表
xnx_block_user_rec:推荐会员购买记录(uid/credits_type/credits_num/expire_date),到期即下架,卸载时删表
配置流程
后台「插件管理」启用;基础设置(
plugin-setting-xnx_block_user-basic):土豪榜积分类型、会员 Tab 勾选与排序(全部不勾 = 整卡隐藏)推荐会员与上墙(wall Tab):填管理员推荐 uid、坑位数、开启购买、选支付积分类型与数量、设时效天数;可查看未过期购买记录并手动下架
前台首页中栏查看效果;用户点「我要上墙」支付后自己进入推荐会员位
实现要点
后台设置分 Tab 覆盖式保存,
array_merge(旧, 新)防跨 Tab 丢配置积分字段白名单校验(土豪榜排序键直接拼 SQL,必须过滤);member_count=10 产品定死,后台不可改
缓存键
block_data注册进 CacheHelper,清理用pluginDeletePrefix;静态资源 filemtime 版本串上墙扣费经 CreditsService,外部不嵌套事务;坑位计算对手动/购买 uid 去重(重复配置按 1 个计)