会员体系

注册登录、等级积分、VIP、投稿审核、收藏关注、站内信、签到、预约、钱包与 RBAC 权限,一次配通。

约 10 分钟 功能 代码块右上角可一键复制
本页目录(10 分钟读完)

这一章只做一件事:把会员相关功能一个一个打开。

页面打不开 → 看 排错手册。

先装哪些插件#

会员功能拆成了几个插件,按需装,不用全装。

插件提供什么什么时候装
member注册、登录、资料、投稿、收藏、消息、签到、VIP基本都要
member-community会员列表、个人主页、在线预约要做社区/预约
wallet积分、余额、兑换要做付费/积分
socialauth微信/QQ/GitHub 一键登录要第三方登录
member-generator批量生成测试会员只用于测试

安装顺序:

  1. 先装 member
  2. 再按需要装其它
  3. 每装一个跑一次 php aucms cache:rebuild

怎么开会员注册#

作用:让访客能自己注册账号。

步骤:

  1. 后台 → 插件 → 插件管理
  2. 找到「会员管理」→ 点「设置」
  3. 「开放注册」选「开」
  4. 「默认角色」选 member
  5. 点「保存」
  6. 跑 php aucms cache:clear

效果:

地址打开后
/login登录页
/register注册页
/forgot找回密码

关掉注册:「开放注册」选「关」。关掉后 /register 直接 404。

打不开? → 看 排错手册

怎么开投稿#

作用:让会员自己发内容。

步骤:

第 1 步:打开投稿开关

  1. 后台 → 插件 → 插件管理 → 会员管理 → 设置
  2. 「允许投稿」选「开」
  3. 「投稿需审核」选「开」(建议)
  4. 点「保存」

第 2 步:勾选可投稿的栏目

  1. 后台 → 插件 → 会员管理 → 栏目投稿
  2. 勾上允许投稿的栏目
  3. 点「保存」
文本
默认一个栏目都不勾。
所以「会员中心没有投稿入口」多半不是 bug,是没勾栏目。

效果:会员登录后打开 /member/submit 能投稿。

投稿后的流程:

步骤谁做在哪
1. 会员投稿会员/member/submit
2. 内容进「审核中」系统自动
3. 点通过管理员插件 → 会员 → 投稿审核
4. 内容上线系统自动
5. 作者得积分系统自动,每篇 10 分

打不开? → 看 排错手册

怎么开签到#

作用:让会员每天签到领积分。

步骤:

  1. 后台 → 插件 → 插件管理 → 会员管理 → 设置
  2. 「允许签到」选「开」
  3. 「签到基础积分」填 5
  4. 「连续签到加成」填 2
  5. 「连续签到上限」填 7
  6. 点「保存」

效果:会员中心出现签到按钮。连签每天多给 2 分,最多按 7 天算。

打不开? → 看 排错手册

怎么配 VIP#

作用:卖会员,控制付费内容。

步骤:

第 1 步:建套餐

  1. 后台 → 插件 → 会员管理 → VIP 套餐
  2. 点「新建」
  3. 填套餐
项填什么例子
名称套餐名月卡 / 年卡
时长多少天30 / 365
价格多少钱19.9
说明给用户看的全站文章免费看
  1. 点「保存」

第 2 步:看效果

前台打开 /member/vip,能看到刚建的套餐。

第 3 步:确认订单

VIP 默认是「手动确认」:

  1. 后台 → 插件 → 会员管理 → VIP 订单
  2. 收到钱后点「已支付」
  3. 系统自动开通

怎么用 VIP 挡内容(模板里加):

HTML
{if !empty($user) && $user.vip_expire > $now}
  {$article.content|raw}
{else}
  <div class="paywall">
    <p>本节内容为会员专享</p>
    <a class="btn" href="/member/vip">开通会员</a>
  </div>
{/if}

打不开? → 看 排错手册

怎么配积分#

作用:给会员发虚拟分,能兑换东西。

积分怎么来:

行为默认给多少在哪改
签到+5,连签递增会员设置
投稿通过+10会员设置
后台手动加任意会员列表 → 调整积分
消费兑换扣减钱包 → 兑换管理

怎么手动加积分:

  1. 后台 → 插件 → 会员管理 → 会员列表
  2. 点开某个会员
  3. 点「调整积分」
  4. 填数字,选加/减
  5. 点「保存」
文本
不要直接改数据库里的积分字段。
必须走后台或 app('wallet')->change()。
否则账本对不上,审计页会报警。

打不开? → 看 排错手册

怎么开收藏#

作用:让会员收藏文章。

步骤:

第 1 步:确认插件装了

member 插件启用即可。

第 2 步:详情页加收藏按钮

在 view/你的主题/index/article.html 里加:

HTML
{if !empty($user)}
<button class="btn-fav"
        data-fav-id="{$article.id}"
        data-fav-url="/member/favorite"
        data-csrf="{$csrf}">收藏</button>
{/if}

第 3 步:抄 JS

把默认主题 static/js/style.js 里的收藏代码抄过来。

文本
JS 请求必须带 X-Requested-With: XMLHttpRequest。
不带的话后端按普通表单处理,前端会显示「操作失败」。

效果:登录后点「收藏」,/member/favorites 里能看到。

打不开? → 看 排错手册

怎么开站内信#

作用:给会员发通知。

步骤:

  1. 装好 member 插件就行,不用额外开
  2. 会员收信:/member/messages
  3. 管理员代发:后台 → 插件 → 会员管理 → 会员详情 → 发消息

投稿自动通知:投稿通过后,系统自动给作者发「你的投稿已通过」。

打不开? → 看 排错手册

怎么开预约#

作用:让访客在线约时间(到店、咨询)。

步骤:

第 1 步:装插件

启用 member-community。

第 2 步:填预约项目

  1. 后台 → 插件 → 会员社区 → 社区设置
  2. 「预约项目」每行填一个,例如:
文本
到店咨询
电话回访
上门测量
  1. 「预约须知」填提示文字
  2. 「每日预约上限」填 3
  3. 「预约通知」选「开」
  4. 点「保存」

第 3 步:看效果

前台打开 /member/appointment,能提交预约。

第 4 步:处理预约

  1. 后台 → 插件 → 会员社区 → 预约管理
  2. 点开一条
  3. 状态改成「已确认」「已完成」或「已取消」
文本
预约时段写死在 09:00–18:00,半小时一档。
要改时段只能改插件源码,没有配置项。

打不开? → 看 排错手册

怎么配权限#

作用:控制每个管理员能点哪些菜单。

步骤:

第 1 步:建角色

  1. 后台 → 插件 → 会员管理 → 角色与权限
  2. 点「新建角色」
  3. 填名称,例如「编辑」
  4. 勾上这个角色能做的事(内容管理、会员管理…)
  5. 点「保存」

第 2 步:把人放进角色

  1. 后台 → 插件 → 会员管理 → 会员列表
  2. 点开某个会员
  3. 「角色」选「编辑」
  4. 点「保存」

效果:这个会员登录后,只能看到勾过的模块。

文本
没勾的模块,默认只有超管能进。
这不是 bug,是「默认拒绝」的安全设计。
超管不会被禁用/删除 —— 系统保留最后一个超管。

打不开? → 看 排错手册

前台页面一览#

装好后前台自动多出这些地址:

地址干什么要登录吗
/login登录否
/register注册否
/forgot找回密码否
/member会员中心是
/member/profile改资料是
/member/submit投稿是
/member/submits我的投稿是
/member/favorites我的收藏是
/member/messages站内信是
/member/followers关注/粉丝是
/member/vip开通 VIP是
/member/wallet钱包/积分是
/members会员列表(社区插件)否
/member/{id}个人主页(社区插件)否
/member/appointment在线预约(社区插件)否

想改这些页面的样子:在主题目录建同名文件就能覆盖。

文本
view/你的主题/member/center.html
覆盖规则:主题优先,插件默认回落。

常见问题#

现象原因修法
注册页 404「开放注册」关了打开
注册后提示待审核账号状态是 2 或 4后台改成 1
看不到投稿入口没勾栏目栏目投稿里勾
积分加了余额没变没走账本用 app('wallet')->change()
上传头像失败上传限制查上传设置与 PHP 限制
预约提交失败预约项目为空社区设置里填项目

还没解决?→ 看 排错手册

给会 PHP 的人:怎么在插件里调会员#

PHP
// 当前登录会员(未登录返回 null)
$user = \Aucms\Support\Context::get('current_user');

// 会员资料
$profile = \app('member.profile')->get($userId);

// 加积分(必须走账本)
\app('wallet')->change($userId, 10, 'daily_bonus', '每日奖励');

// 发站内信
\app('member.message')->send($userId, '标题', '内容');

// 判断是不是 VIP
$isVip = \app('vip')->isVip($userId);
文本
跨插件调用前,先确认对方服务已注册。
标准写法是在控制器构造函数里判断 class_exists。
没找到答案? 在后台「缓存与维护 → 系统体检」里看环境是否正常;仍无解就打开 server_debug.php 复现一次,页面会直接告诉你异常文件与行号。