简介:易优第三方商家(会员变商家)商城插件是面向易优CMS平台的电商扩展组件,主要帮助站长将注册会员升级为平台商家,适用于需要快速搭建多商家入驻、店铺自主运营场景的中小型电商网站。压缩包共526个文件、约7.47MB,其中JS与CSS承担前端交互和界面样式,PNG、GIF为店铺及商品配图素材,HTM文件构成商家后台与商城页面模板,PHP和SQL则实现业务逻辑与数据库结构,整体目录遵循易优插件常规规范,便于二次开发。目前已有135人学习浏览。解压后可重点查看application、template、weapp三类目录:前者包含控制器、模型及服务逻辑,帮助理解会员转商家的权限流转;中间为前端展示模板,覆盖商品发布、订单管理等界面;后者则提供微信小程序端配置,便于商家同步管理移动端店铺。对于希望扩展现有商城功能或研究易优CMS会员体系的开发者来说,这份插件包兼具参考与直接部署价值。
1. 先聊个场景:会员想卖货,结果卡在“变商家”这一步
很多用易优系统做商城的同学,前期会员注册、商品展示、下单结算都跑得好好的,突然某天运营说“要让老会员申请开店铺”,你打开后台一看,用户中心里压根没有“申请成为商家”这个入口。翻遍官方文档,商城自带的用户角色只有普通会员,要么手动去数据库把用户改个权限,改完用户登录后也没有店铺管理界面。
这个“第三方商家(会员变商家)商城插件”就是冲这个缺口来的。它的核心逻辑很直白:把原本不能卖货的普通会员,通过一个申请流程升级成商家角色,绑定店铺、发布商品、管理订单,走完一套独立于平台后台的商家管理链路。实测下来,它解决的不只是“有没有入口”的问题,连后台审核、角色权限切分、商家结算单这些细节都补齐了。安装完如果版本不匹配、PHP环境不对、菜单没挂载,照样翻车。下面按实际落地顺序把安装过程完整写一遍,新手跟着走,熟手可以只看环境和避坑部分。
2. 环境准备:PHP版本、MySQL和易优版本怎么配才不打架
2.1 插件运行机制先说清,后面配置才有依据
这个插件本质上不是一个独立运行的程序,它是“寄生”在易优商城框架里的一组控制器、模型、数据表和页面模板。安装时要做三件事:把插件代码放到易优的插件目录里、给数据库增加商家申请表和用户表扩展字段、在后台菜单系统里挂一个入口。这三件事缺一件,插件都会处于“装了个寂寞”的状态。
先搞清楚它的数据流:会员在用户中心点“我要开店”→ 提交店铺名称、联系人、手机号、资质信息 → 后台管理员审核 → 通过后系统给这个会员的用户记录写入is_saler=1,同时创建一条店铺记录 → 这个用户再登录时,用户中心会多出“店铺管理”模块。整个过程涉及用户表、申请表、店铺表三块,所以安装前先想清楚,你的业务是要全部自动通过,还是要人工审核。
2.2 版本对照:先看这张表再动手,不看就装容易白忙活
以下版本组合是这套插件运行最稳的配比,如果你当前的环境不在这个范围里,提前升级或踩坑前先有个心理准备:
| 软件 | 版本建议 | 说明 |
|---|---|---|
| 易优商城 | V1.5.x 及以上(V1.5.4 亲测) | 插件里引用了新的用户中心模板标签,老版本可能缺方法 |
| PHP | 7.3 - 7.4 最优,PHP 8.0 可与插件作者确认 | 插件控制器里用了部分旧式写法,PHP 8.1+ 会抛Deprecated但不一定白屏 |
| MySQL | 5.6 / 5.7 / 8.0 均可 | 建表语句为 utf8mb4,MySQL 5.5 及以下字符集兼容差 |
| ThinkPHP | 易优自带的 5.0 版本即可 | 插件不额外引入第三方框架 |
这里有个关键点:插件不能单独跑,必须依托易优的壳。所以你先确认本地易优版本:php -v看 PHP 版本,后台“系统信息”里看易优版本号。版本太老的,插件挂上之后菜单能显示,但申请页直接 404,因为路由规则不匹配。
2.3 环境检查:不用等装完,先花两分钟确认三个依赖
打开命令行,进入易优根目录,依次跑这三条命令:
php -v # 查看 PHP 版本,输出里应该有 PHP 7.3 / 7.4 字样 php -m | grep -E "pdo_mysql|curl|gd" # 确认 PHP 扩展,三个都输出才算过 mysql -V # 看 MySQL 客户端版本,服务端以 phpMyAdmin 显示为准说明:第一条命令确认 PHP 版本在插件兼容范围;第二条最容易被忽略——这个插件的商家申请页要上传身份证截图,gd扩展缺失会导致图片上传验证码直接不显示,报错还很隐晦;第三条是确认 MySQL 不是老古董。如果pdo_mysql没装,插件连接数据库会直接 500,连报错日志都是空的,那是最玄学的一类问题。
2.4 数据库账号权限预检:一个容易忽略的坑
安装插件会执行表结构变更,所以当前连库的 MySQL 账号必须有CREATE和ALTER权限。很多虚拟主机给的数据库账号只有SELECT/INSERT/UPDATE/DELETE,你在执行安装脚本时会卡在“创建数据表失败”,但又不敢乱删。
mysql -u你的用户名 -p你的密码 -e "SHOW GRANTS FOR CURRENT_USER;"执行后看输出里有没有CREATE字样,没有就先在数据库管理后台给账号加权限,或者直接换一个权限完整的主库账号。这条命令不会影响线上数据,但能提前把最尴尬的权限问题暴露出来,免得装一半再回头折腾。
3. 下载与安装:从文件落盘到菜单挂载,照着走完一遍
3.1 插件包结构:先摸清里面是什么东西
解压插件包后,你会看到两大部分:application(易优的应用代码目录)和public(前台静态资源目录)。不要直接把整个文件夹拖进网站根目录,只把里面的子目录拿出来:
member_to_saler/ # 插件主目录 ├── application/ │ ├── plugins/ │ │ └── member_to_saler/ # 控制器、模型、视图全在这 │ │ ├── controller/ # SalerApply.php 申请控制器 │ │ ├── model/ # ApplyModel.php / ShopModel.php │ │ ├── view/ # 申请页面模板、店铺管理页模板 │ │ └── config.php # 插件参数配置文件,装了之后还能改 ├── public/ │ └── static/ │ └── member_to_saler/ # 插件用到的 css / js / 上传头像、资质图专用目录 └── sql/ └── install.sql # 建表 + 用户表增加字段,一步到位先看这一层,后面才不会出现“把 plugins 目录复制到 public 里”这种手滑操作。另外install.sql最好先用记事本打开看一眼编码,如果编辑器把它转成带 BOM 的 UTF-8,导入时 MySQL 会把??当表名前缀,导致建表失败。
3.2 上传:不要把目录结构搞乱
用 FTP 或宝塔面板进入易优根目录,路径分别是application/plugins/和public/static/。把解压得到的member_to_saler分别放入对应位置:
# 在网站根目录下执行,先把目标目录建好 mkdir -p application/plugins/member_to_saler mkdir -p public/static/member_to_saler如果用的是宝塔的“上传压缩包再解压”方式,务必在解压后确认多了一层嵌套目录。比如你上传的是member_to_saler.zip,解压后可能得到application/plugins/member_to_saler/,这没问题;但如果你上传的是整个压缩包,解压出来的结构是member_to_saler/application/...,那就是多套了一层壳,运行时会提示“插件不存在”。处理方式:直接把内层文件上移一级,或者重新压缩。
3.3 导入数据库:执行前备份一次,这个是后悔药
sql/install.sql包含两类内容:新建ey_saler_apply店铺申请表和ey_saler_shop店铺信息表,以及给ey_users表增加is_saler、saler_time两个字段。执行之前先把原库导出一份,免得手滑把用户表结构改坏了没法恢复:
# 备份原数据库,备份文件名带上日期是习惯,别删 mysqldump -u你的用户名 -p你的密码 你的数据库名 > backup_$(date +%Y%m%d).sql然后在 phpMyAdmin 或宝塔的“执行 SQL”里粘贴install.sql内容,或者直接用命令行导入:
mysql -u你的用户名 -p你的密码 你的数据库名 < sql/install.sql这时候去查看ey_users表结构,多出is_saler字段就没有问题了。注意:如果你的数据表前缀不是ey_,需要手动把 SQL 里的ey_users改成你自己的前缀,比如eas_,不然导入之后查不到字段。
3.4 挂载后台菜单:少了这一步等于没装
插件目录结构没问题、数据库表也建好了,但你打开易优后台,左边的菜单栏里根本不会有这个插件。因为易优后台的左侧菜单是存在数据库表里的,不是自动扫描目录。安装脚本里通常会附带菜单初始化的 SQL,但如果你是通过手动执行 install.sql 的方式装的,菜单代码可能没写进去。
你需要进后台“插件”或“应用管理”区域,找到第三方插件列表,看该插件是否显示了一个“点击安装”状态。如果列表里直接能看见名称,点一下“安装”按钮,它会自动注册菜单项。如果没有安装按钮,就在菜单管理里手动新增一个顶级菜单,名称写“商家管理”,URL 指向插件控制器的 index 方法,比如:
/index.php?m=plugins&c=SalerApply&a=index配置好后到角色权限里,把超管角色勾上这个菜单的访问权限。注意易优的后台权限粒度比较细,即使菜单挂上了,当前管理员角色没有勾选对应权限,一样会看到“无权限访问”的空白页,这一步是新手最容易误判成“插件坏了”的地方。
3.5 验证安装状态:用一条命令看文件是否都就位
装完后,打开浏览器,先别急着测试流程,直接访问这个地址:你的域名/index.php?m=user&a=saler_apply&id=你的会员uid,如果页面正常显示“我要开店”的表单,说明前台路由通了;如果报“模板不存在”或直接跳转首页异常,优先检查application/plugins/member_to_saler/view/目录下的模板文件名是否和控制器里返回的视图名完全一致,大小写都不能错。这一条路径通了,说明文件、数据库、路由三件事都成功了。
4. 配置细节:角色、审核与入驻流程怎么设,设错就白装
4.1 基础开关与入驻费用:先配置参数
进入后台的插件配置页面,你会看到插件的核心参数表格。这些参数存到config.php里,也可以存到易优的配置表,不同版本可能有差异,但核心参数就这几个:
// application/plugins/member_to_saler/config.php return [ 'mts_open' => '1', // 是否开启会员开店功能,1 开,0 关 'mts_audit' => '1', // 审核模式:1 人工审核,0 自动通过 'mts_fee' => '0.00', // 开店入驻费用(元),0 为免费 'mts_group' => '7', // 商家用户组ID,对应后台的角色ID 'mts_upload_path' => 'public/static/member_to_saler/upload', // 资质图片上传目录 ];这里的核心是mts_audit和mts_group。如果你把审核模式设为 0,用户提交申请后不用等审核就直接成为商家,适合内部测试环境;线上环境建议用 1,至少过滤一波没有资质的账号。mts_group的值要和易忧的角色管理里的商家角色 ID 对上。不知道怎么查?后台“用户管理-角色管理”,商家对应的那个角色旁边的数字就是 ID,把这个数字填进去。
4.2 商家角色与权限绑定:手动创建一套“商家菜单权限”
前面 2.2 提到要把mts_group指向商家角色。如果角色列表里根本没有“商家”这个角色,你先在后台用户-角色管理里新建一个角色,名称叫“商家”,然后勾选这些权限:商品发布、商品管理、订单查看、订单发货、店铺设置、提现申请、物流查询。
这些权限项是易优自带的部分,在角色编辑的权限树里直接勾选即可。勾选完毕点保存,然后回到插件配置页把mts_group填成这个角色的 ID。这个关联很重要——用户变成商家后,登录前台进入“用户中心”,看到的菜单是由角色决定的,如果你给的是管理员角色,用户就会进入后台管理界面,那就乱套了。
4.3 审核流程配置:到期不处理,要不要自动发提醒
人工审核模式下,用户提交开店申请后,后台-商家管理-入驻审核里会出现待审列表。审核点击通过,插件执行两个操作:把用户表里的is_saler置为 1,往店铺表插入一条记录。驳回则是状态置为 -1,用户在申请页会看到“审核未通过”的提示,重新编辑资料再提交。
大部分版本在审核通过后没有自动发送站内信或短信通知,需要你在插件的控制器源码里找类似send_notice的方法,把易优自带的消息模板调用起来。常见做法是改一行代码:
// 审核通过后的处理逻辑,在 controller 里找到审核方法 // 在状态更新后插入一条站内信记录 $msgData = [ 'to_uid' => $applyInfo['uid'], 'title' => '开店审核通过', 'message' => '您的店铺已开通,可以发布商品了', 'add_time' => time(), ]; db('message')->insert($msgData);这段代码写在审核通过的逻辑分支里。不同版本的易优消息表名可能不同,有的是ey_user_msg,先看一眼数据库再写。不加这条也没问题,只是用户会不知道审核结果,容易一直干等。
4.4 商城联动:店铺开好了,怎么和前台商城打通
理论上,插件把用户变成商家后,他发布商品可以走易优自带的后台商品发布流程,在店铺管理中也能管理自己的订单。但这里有一个常见的联动设置:商品发布时,编辑商品归属的店铺 ID,以及商品详情页是跳转到平台详情页,还是店铺独立页。这个在插件的店铺设置里有一个选择项,通常叫“商品展示模式”。
如果你选了“独立店铺页”,那么商家发布商品时还需要填写店铺简介、店铺 banner、店招等字段。这些信息在商家提交开店申请时如果没有收集,后台可以通过编辑店铺信息补录。系统约定是,用户在申请开店时填写的资料越完整,店铺页面显示的内容越丰富,所以安装后尽量在后台把申请表单的必填项调多几个:店铺名称、店铺等级、所属地区、店铺介绍,至少在审核时有东西可看。
5. 避坑记录:四类高频翻车现场,附处理方案
5.1 装完后台看不到插件菜单
现象:文件放到目录了,数据库也导入了,后台左侧依旧没有商家管理的入口。
原因:菜单没有注册到数据库,常见的三种,一是没有执行 install.sql 里的菜单初始化语句,二是角色权限没有勾选,三是插件列表里点击安装按钮后菜单生成了但缓存未更新。
解决:先到角色权限里把超管全选一遍菜单,保存后退出登录重新进后台;如果还是没有,去插件列表页面重新点一次“安装”;再不行,手动在菜单管理里新增顶级菜单,参考 3.4。最后一步,清空runtime/cache/下所有文件,这个目录缓存了菜单结构,不清理的话改多少遍都不刷新。
5.2 用户申请页直接白屏或 500
现象:前台用户中心点“我要开店”,页面空白,Chrome 开发者工具显示 HTTP 状态码 500。
原因:八成是 PHP 版本不兼容抛致命错误,还有一种可能是视图模板里的标签写法在当前易忧版本里不支持,提供了 undefined method 直接白页。
解决:先看 PHP 报错日志,日志在runtime/log/下,找当天的日志文件,搜索“Fatal error”。如果是Class 'Xxx' not found,检查插件的控制器命名是否符合 PSR-4 规范,直接对比插件目录里的controller/SalerApply.php与易优自带控制器类名是否同风格。如果是模板标签不被解析,到插件的 view 里把自定义标签替换为易优原生标签写法,注意不要改函数名,只改标签格式。
5.3 会员申请成功后,登录账号却被强制跳到后台
现象:审核通过后,用户在前台登录,页面直接跳到了管理后台,或者显示一堆管理员菜单。
原因:角色 ID 填错了。插件把用户组的 ID 变成了后台管理员的组 ID,用户在登录时被识别为后台角色了。
解决:确认mts_group填的是前台角色ID,不是后台角色 ID。检查后台角色管理里,商家这个角色的用途属于前台用户组而不是后台管理员组。如果两者混在一起了,新建一个前台“商家”角色,勾选前台权限,把用户手动调整到这个组下,再同步对应ey_users.is_saler字段为 1。改完之后让用户重新登录、清除浏览器 Cookie,前台的跳转逻辑基于用户组判断,换了组才生效。
5.4 审核通过后,店铺没有自动创建
现象:后台审核按钮点下去,用户的状态确实变成商家了,但店铺表里没有新记录,用户进店铺管理也看不到东西。
原因:审核逻辑是“先改用户状态,再插入店铺数据”,如果插入店铺数据前有未捕获的异常,代码中断但前面的状态更新已经写进数据库了,就会出现这种半截状态。
解决:手动补建店铺记录,在后台商家管理-店铺管理里点“新增”,把用户的资料补录入对应字段;或者直接执行 SQL 补数据:
-- 假设 uid 为 5 的用户审核通过后没建店铺 INSERT INTO `ey_saler_shop` (`uid`, `shop_name`, `status`, `create_time`) VALUES (5, '待补全店铺名', 1, UNIX_TIMESTAMP());补完之后,要排查插件代码里审核方法,看店铺插入的 SQL 是不是有字段名写错之类的低级问题,找到后改掉,以后就不会再出现半截状态。
6. 验证跑通:新建一个测试会员,从头走完开店全链路
装完不要直接拿真实会员试,先在后台建一个测试会员账号,走完下面全流程才放心。
第一步:前台申请。用测试账号登录前台,进入用户中心,找到“我要开店”入口,填写店铺名、联系人等信息提交申请。提交后数据库里ey_saler_apply表多一条记录,status为 0。
第二步:后台审核。登录后台,进入商家管理-入驻审核,看到待审列表有一条数据,点击通过。通过后回到用户表查看ey_users,这个测试账号的is_saler变为 1,同时ey_saler_shop表生成一条店铺记录。
第三步:商家侧验证。重新用测试账号登录前台,看用户中心是否多出“店铺管理”“商品发布”“订单管理三个菜单。进商品发布页,尝试发布一个测试商品,价格填 0.01,能看到商品在前台列表正常展示。
第四步:订单闭环。用另一个普通会员账号下单购买这个测试商品,走完支付流程(可用模拟支付进行),商家测试账号能看到订单并执行发货。这一步如果能跑通,插件核心链路就算全部验证完成。
第五步:数据库终检。执行一条 SQL 综合验证:
SELECT u.id, u.is_saler, s.shop_name, a.status FROM ey_users u LEFT JOIN ey_saler_shop s ON s.uid = u.id LEFT JOIN ey_saler_apply a ON a.uid = u.id WHERE u.id = 测试账号ID;看到is_saler=1、shop_name有内容、status=1,整个闭环成立。从那以后我每次装完这类第三方商城插件,都会强制把“申请-审核-开店-发商品-下单”完整走一遍再交付,省得客户自己点进去发现某个环节断了。测试会员记得删掉或者停用,别留着占用户列表。希望帮到你。
本文还有配套的精品资源,点击获取