CoopCycle餐厅配置实战:5步搞定菜单、商品与在线点餐的完整教程
【免费下载链接】coopcycle-webLogistics & marketplace platform. Only for worker-owned business.项目地址: https://gitcode.com/gh_mirrors/co/coopcycle-web
CoopCycle 是一个面向工人合作社的自托管外卖配送平台,让本地餐厅提供在线点餐,由自行车骑手完成配送。本教程带你完成CoopCycle 餐厅配置:从创建餐厅、设置营业时间,到搭建菜单商品、开通在线点餐与支付,5 个步骤即可让一家餐厅在平台上开张营业 🚴
一、先认识餐厅模块:代码在哪里?
CoopCycle 的餐厅相关功能集中在以下目录,配置界面与逻辑一一对应,方便你按图索骥:
| 功能 | 关键文件 | 说明 |
|---|---|---|
| 餐厅页面路由 | src/Controller/RestaurantController.php | 餐厅展示、购物车、下单入口 |
| 餐厅配置表单 | src/Form/RestaurantType.php | 后台所有餐厅配置字段的定义 |
| 餐厅前台页面 | templates/restaurant/index.html.twig | 顾客看到的餐厅主页 |
| 菜单分区渲染 | templates/restaurant/_partials/menu_content.html.twig | 按分类展示菜品 |
| 功能验收用例 | features/foodtech.feature | 点餐流程的自动化测试场景 |
💡 小提示:餐厅(Restaurant)与商店(Store)在 CoopCycle 中是同一套"本地商户"模型的两种形态,后台配置方式基本一致。
二、第 1 步:创建餐厅并填写基础信息
进入后台「商户 → 餐厅」页面,点击新建。核心字段如下(定义见 src/Form/RestaurantType.php):
- 餐厅类型(type):普通餐厅或商店形态;
- 描述(description):会展示在餐厅主页,是吸引顾客的第一段文案;
- 经营地址(businessAddress):支持"不同营业时间使用不同地址"(
useDifferentBusinessAddress),适合周末市集这类场景; - 主打标签:
featured(平台推荐位)与exclusive(平台独家)可提升曝光; - 菜系(cuisines):用于"按菜系找餐厅"的筛选页面。
配置完成后,餐厅主页会自动生成SEO 结构化数据(Schema.org 微数据),帮助餐厅被搜索引擎准确识别——这一逻辑就在 templates/restaurant/index.html.twig 中实现。
三、第 2 步:设置营业时间与配送方式
在线点餐的体验核心在于"什么时候能点、送到哪里"。
营业时间
餐厅的营业时段支持细到每一天的开闭店时间,前台会展示"现在营业中/休息中"状态,模板见 templates/restaurant/_partials/opening_hours.html.twig。
配送方式与预订延迟
在fulfillmentMethods(配送方式集合)中可为餐厅单独配置:
- 外卖配送:开启后可设置
orderingDelayMinutes(预订延迟分钟数),例如"提前 30 分钟接单",前台会自动显示温馨提示; - 到店自取:骑手不参与的纯自提场景;
- 每日配送范围:
dayOfWeekDeliveryPerimeterExpressions支持按星期几绘制不同配送多边形区域。
四、第 3 步:搭建菜单——先分类,后商品
CoopCycle 菜单是"分区(Taxon)→ 商品(Product)"两级结构:
- 创建菜单分区:如"前菜""主食""饮品",入口为后台餐厅详情下的菜单分类管理(templates/restaurant/menu_taxons.html.twig),每个分区可写一句介绍语;
- 添加商品:在分区下创建商品(templates/restaurant/products.html.twig),填写名称、价格、描述,并可上传图片;
- 商品选项:通过商品选项(product options)实现"加一份芝士""去冰"这类定制项;
- 上架控制:商品可独立启用/停用,下架即从菜单消失,无需删除数据。
前台菜单会按分区渲染成响应式卡片网格,超过 10 个商品后自动懒加载,保证页面秒开(见 templates/restaurant/_partials/menu_content.html.twig):
五、第 4 步:开通在线点餐与支付
菜单就绪后,剩下两步让餐厅真正"开张":
结账与购物车
顾客点选商品后进入购物车(基于 Sylius 订单组件实现),系统会实时计算最早可送达时间。下单逻辑入口在 src/Controller/RestaurantController.php 的 JSON 结账接口中,购物车、送达时间、订单凭证一次返回。
支付方式
在餐厅配置表单的支付区块(src/Form/RestaurantType.php)可按需开启:
| 支付方式 | 配置项 | 适用场景 |
|---|---|---|
| 货到付款 | cashOnDeliveryEnabled | 无需任何支付集成,最快上手 |
| Stripe 分账 | allowStripeConnect | 线上信用卡收款,平台抽佣 |
| Paygreen 企业支付 | usePaygreen | 面向企业客户 |
| Swile 餐券 | 支付组件支持 | 企业餐券结算 |
✅新手推荐路径:先开"货到付款"验证流程,再接 Stripe 实现线上收款。
六、第 5 步:营销与运营加分项
开张之后,这些配置能让生意更好:
- 促销活动:创建限时优惠并设为"主打推广",餐厅主页顶部会自动展示优惠横幅;
- 自动接单:开启
autoAcceptOrdersEnabled后订单直接进入配送队列,适合成熟商户; - 可复用包装押金:
depositRefundEnabled支持押金退还流程,呼应 CoopCycle 的环保理念 🌱; - 数据统计:后台餐厅统计页可查看订单量与收入趋势。
平台整体由 Web API、前端与配送算法三部分组成,完整架构可参考 docs/img/technical-overview.png 对应的技术概览文档 docs/img/:
七、本地部署快速开始
想亲手试一遍?克隆仓库并用 Docker 一键启动:
git clone https://gitcode.com/gh_mirrors/co/coopcycle-web cd coopcycle-web cp .env.dist .env docker compose up详细说明见项目根目录的 README.md。启动后用管理员账号登录,按上面 5 个步骤配置你的第一家餐厅即可 🎉
常见问题 FAQ
Q1:餐厅和商店有什么区别?两者共用同一套商户模型与配置界面,主要差异是菜系、菜单分区等"餐饮专属"字段仅餐厅可见。
Q2:可以只开自取不开配送吗?可以。在配送方式集合中仅保留"到店自取"即可,前台会自动隐藏配送相关选项。
Q3:配置错了能回滚吗?商品、分区均支持停用而非删除,误操作时先"下架"排查,数据不会丢失。
总结
本文带你完成了CoopCycle 餐厅配置的全流程:创建餐厅 → 营业时间与配送区域 → 菜单分区与商品 → 在线点餐与支付 → 营销运营。掌握这 5 步,你就能在自托管的 CoopCycle 平台上开出第一家线上餐厅,把外卖业务交还给社区与骑手 🚴♂️
【免费下载链接】coopcycle-webLogistics & marketplace platform. Only for worker-owned business.项目地址: https://gitcode.com/gh_mirrors/co/coopcycle-web
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考