当前位置: 首页 > news >正文

CoopCycle餐厅配置实战:5步搞定菜单、商品与在线点餐的完整教程

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)"两级结构:

  1. 创建菜单分区:如"前菜""主食""饮品",入口为后台餐厅详情下的菜单分类管理(templates/restaurant/menu_taxons.html.twig),每个分区可写一句介绍语;
  2. 添加商品:在分区下创建商品(templates/restaurant/products.html.twig),填写名称、价格、描述,并可上传图片;
  3. 商品选项:通过商品选项(product options)实现"加一份芝士""去冰"这类定制项;
  4. 上架控制:商品可独立启用/停用,下架即从菜单消失,无需删除数据。

前台菜单会按分区渲染成响应式卡片网格,超过 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),仅供参考

http://www.cnnetsun.cn/news/4158355.html

相关文章:

  • HDR环境光照教程:用intensity_env和rotate_env在rayshader_portraits中打造电影级光影
  • 基于FMMosaicLayout打造互动图片墙:Cell长按缩放动画与复用机制实战
  • tlock进阶技巧:Duration、轮次编号与Armor,6个让时间锁加密更灵活的用法
  • 题解:洛谷 P3076 [USACO13FEB] Taxi G
  • NCM 转 MP3 完整攻略:用 ncmdump 免费转换,拖拽 4 步上手
  • FiD显存优化秘籍:Checkpointing与answer_maxlength如何驯服100段长文本
  • 毕业论文“难产”自救指南:AI写论文哪个软件最好?我站宏智树AI
  • UE5-MCP:如何用AI把3个月的UE5关卡开发压缩到3天
  • 星际争霸II Bot API库python-sc2入门:为什么它是Python打造SC2 AI机器人的终极选择
  • 为什么Remote PowerShell正在被淘汰:理解Exchange V3模块的REST API连接迁移(office-docs-powershell)
  • 053、VLA模型的训练数据与配比:互联网数据与机器人数据的融合
  • 3步备份QQ空间全部历史说说:GetQzonehistory 完整上手指南
  • QuickLook 插件选型指南:macOS 空格键预览只装这几组才真正用得上
  • PCSX2 Gamefixes与PNACH作弊码完全指南:解决闪退卡顿并解锁60帧
  • Engauge Digitizer 入门指南:从图表图像提取数据点的安装配置全流程
  • CSWin Transformer预训练权重怎么选:Tiny/Small/Base/Large六种模型参数与FLOPs全对比(附选型建议)
  • 如何快速给 Unity WebGL 加上原生输入框:WebGLInput 完整上手指南
  • Oracle APEX Blueprints实战:AI驱动的规范开发,从需求文档一键生成应用
  • EntityFrameworkCore.Triggered性能开销到底有多大?完整基准测试数据解读
  • 132、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从运动矢量置信度到混合权重的工程调优
  • 使用vminpoly前必知的5个注意事项:常见坑与浏览器兼容清单
  • 扩展 D-Zone:接入 Slack 等新聊天平台的开发者进阶指南
  • 潍坊全家电维修服务指南-欧米到家常见故障、服务范围与预约报修
  • SillyTavern-Launcher:一条命令装好 AI 应用全家桶|从零跑通完整指南
  • 安卓7.0 开机动画和launcher之间的黑屏...如何解决?
  • R2CNN_Faster-RCNN_Tensorflow网络架构深度剖析:ResNet+RPN双路旋转检测的TensorFlow实现原理
  • ThriftPy2协议层深度解析:Binary、Compact、JSON协议全对比与选型建议
  • 基于BERT的情感分析实战:从Hugging Face微调到生产部署全流程
  • 中文AI绘图神器ComfyUI-Kolors-MZ:为什么它能让快手Kolors在ComfyUI原生采样?完整概览
  • YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序