ePantry — 希腊食品杂货网店,从 WooCommerce 重建至 Laravel
项目概述
ePantry 销售有名字、有产地的食品:来自希腊北部十二家农场和作坊的豆类、意面、面粉、香草、酱料和蜂蜜,从克尔基尼发货。旧商店基于 WordPress 和 WooCommerce 运行,现已被一个从零设计的 Laravel 12 店面取代,自 2026 年 9 月 8 日起上线。商品目录、分类、编辑内容、订单记录和商店设置均从 WooCommerce 数据库迁移而来,顾客和商店所依赖的一切都没有丢失。
设计灵感来自食品储藏架。商品照片都是白底抠图包装照,因此界面在其下方保持安静:白色底面、连续的细线网格代替浮动卡片、只有一种强调色。每张商品卡片、商品页面和购物车行都带有一个货架标签,标明净重、每公斤或每升价格、生产者和产区。生产者拥有各自的页面,旧博客以食谱和储藏指南日志的形式延续,商店支持货到付款或向三家银行中任意一家转账,让顾客无需支付转账手续费。
挑战
重建必须保留所有已经运作良好的内容:238 件商品及其照片、分类和库存设置、博客、订单记录,以及多年来调整好的每一项设置,都要从 WooCommerce 完整迁移。一些旧数据如果照搬会破坏新商店——没有库存计数的商品、草稿,以及一条会把整个目录都标记出来的低库存规则。而且杂货店有自己的规则:按重量销售的预包装食品必须标出每公斤价格,希腊语大写字母不带重音符号,品牌的陶土色在白底上对比度只有 3.96:1,太浅,无法承载文字。
解决方案
导入命令直接读取 WooCommerce 数据库并映射到新的数据结构——商品、分类、生产者、图片、文章、订单和设置,每条记录都保留旧 ID 以便追溯——并对旧商店的特殊做法进行转换而非照搬:不计库存的商品仍可购买,草稿仍是草稿,低库存阈值保持为二。货架标签按照希腊法律要求,将单位价格放在每个售价旁边。品牌色的较深色调承载所有文字,希腊语以常规大小写书写、由 CSS 转为大写,使重音符号正确去除,并由测试加以保证。动效只有一段 GSAP 序列和低调的滚动显现,可选的声音从不在用户未操作时播放。商品、生产者和食谱页面都带有结构化数据,商店的 llms.txt 由数据库生成,因此其中写明的免运费门槛不会再过时。


