如何在October CMS的EasyShop插件中添加产品项额外数据
October CMS 搭配 EasyShop 实现产品自定义数据添加方案
适配插件选择参考
- 优先选支持October CMS模型动态扩展的通用自定义字段插件,这类插件不绑定特定电商系统,只要是基于October原生模型开发的功能(包括EasyShop的产品模型)都能适配。全程后台可视化操作就能给产品编辑页加自定义字段,支持文本、图片、富文本、关联选项、多组重复内容等常用字段类型,不需要写代码就能完成配置,前台直接调用对应字段值即可输出。
- 如果你的自定义数据是结构化的产品参数、多规格附属信息这类非固定长度内容,选带*Repeater(重复器)*字段支持的扩展插件即可,不需要固定字段数量,运营人员可以在后台动态增减自定义数据条目。
无插件原生实现方案(适配所有个性化需求,无兼容风险)
October CMS本身的扩展机制非常灵活,找不到完全匹配的插件时,少量代码就能实现需求,完全不需要修改EasyShop插件的核心文件,后续插件升级不会丢失自定义配置:
- 扩展产品模型
你只需要在自己搭建的自定义插件(或者主题的逻辑配置段)里,通过模型扩展钩子挂载自定义字段逻辑即可,基础示例代码如下:
数据库层面只需要新建一条migration,给EasyShop的产品表// 代码放到自定义插件的boot方法,或者主题的php运行配置段中 use VojtaSvoboda\EasyShop\Models\Product; use System\Classes\PluginManager; PluginManager::instance()->bootAll(function() { // 挂钩EasyShop产品模型 Product::extend(function($model) { // 单值字段(比如保修时长、自定义副标题):提前给产品表加对应字段后直接声明属性即可 // 多值/结构化自定义数据:声明JSON类型字段存储,不需要额外建关联表 $model->addJsonable(['custom_params', 'extra_marketing_info']); }); });easyshop_products添加你需要的对应字段即可,结构化数据用JSON类型字段存储,维护成本最低。 - 扩展后台产品编辑表单
同样通过October的表单扩展钩子,把你新增的自定义字段注入到EasyShop的产品编辑表单配置里,October原生带的所有表单控件(媒体选择器、富文本、下拉选、重复器、开关等)都可以直接用,不需要自己写后台交互逻辑。 - 前台调用
配置完成后,前台产品页模板里直接调用产品对象的对应属性就能输出自定义数据,调用方式和EasyShop自带的产品标题、价格等原生字段完全一致,比如{{ product.custom_params }}。
注意:所有自定义扩展逻辑不要直接写在EasyShop插件的原始文件里,全部放到你自己的自定义插件或主题目录下,后续更新EasyShop版本不会覆盖你的自定义修改。
内容的提问来源于stack exchange,提问作者lucky
相关产品推荐
相关产品推荐

