Menu
Thực thể Thực đơn mô tả một thực đơn mà nhà hàng cung cấp cho khách hàng. Bạn phải xác định thực thể của Trình đơn trong thực thể của Nhà hàng thông qua thuộc tính menuId
của Nhà hàng đó.
Các đối tượng khác xác định trình đơn (chẳng hạn như nội dung mô tả, hình ảnh, tiện ích bổ sung và thông tin dinh dưỡng) bao gồm MenuItem
và MenuItemOffer
, cũng như các đối tượng không bắt buộc MenuSection
, Availability
và MenuItemOption
.
Mục menu
Bạn có thể sử dụng đối tượng MenuSection
để sắp xếp nhiều đối tượng MenuItem
thành các danh mục logic. Phương pháp này hữu ích cho các nhà hàng có nhiều thực đơn (như bữa sáng, bữa trưa và bữa tối). Hãy thêm mỗi trình đơn dưới dạng một MenuSection
riêng.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Trình đơn cơ bản | Sử dụng MenuItem , MenuItemOffer và MenuSection (không bắt buộc) |
Ví dụ sau đây khớp với trường hợp sử dụng "Thực đơn cơ bản" với hai mục thực đơn ("Đồ ăn cả ngày" và "Đồ uống"), mỗi phần chứa hai món trong thực đơn:
JSON
{ "@type": "Menu", "name": "Coffee Shop A", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "All day food", "menuItemId": ["1", "2"] } { "@type": "MenuItem", "@id": "1", "name": "Mediterranean Bagel", "description": "rocket, scrambled egg, tomato relish, bacon ***Gluten free bagel available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "1", "price": 17.60, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "2", "name": "Club Empire Bagel", "description": "grilled chicken, bacon, rocket, tomato relish ***Gluten Free Bagels Available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "428", "sku": "offer-club-empire-bagel", "menuItemId": "2", "price": 18.90, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "27", "menuId": { "@id": "1535", "displayOrder": 2 }, "name": "Drinks", "menuItemId": ["3", "4"] } { "@type": "MenuItem", "@id": "3", "name": "Cold Brew Coffee", "description": "67% less acid & refreshingly good", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "456", "sku": "offer-cold-brew-coffee", "menuItemId": "3", "price": 8.50, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "4", "name": "English Breakfast Tea", "description": "Not Coffee. Try our tea", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "4432", "sku": "offer-english-breakfast-tea", "menuItemId": "4", "price": 5.50, "priceCurrency": "AUD" }
Trình đơn giới hạn thời gian
Bạn có thể dùng đối tượng MenuItemOffer
kết hợp với Availability
để tạo
các mục trong trình đơn và mục trong trình đơn giới hạn thời gian. Thay vào đó, hãy sử dụng đối tượng Availability
để tạo các mục trong trình đơn có giới hạn thời gian.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Mục trình đơn có giới hạn thời gian | Sử dụng Availability để chỉ định thời gian availabilityStarts và availabilityEnds của phần. |
Trường hợp sử dụng 2: Mục trình đơn có giới hạn thời gian | Sử dụng menuItemId của MenuItemOffer để chỉ định ưu đãi liên kết với MenuItem . Hãy dùng Availability để chỉ định thời gian sử dụng availabilityStarts , availabilityEnds và availabilityDay mã> của ưu đãi. |
Trường hợp sử dụng 3: Mục trong trình đơn nhiều ưu đãi | Sử dụng thuộc tính menuItemId của MenuItemOffer và thiết lập thuộc tính availabilityId để chỉ định thời gian mà giá có hiệu lực. |
JSON
Thực đơn cơ bản có các phần "Đồ ăn cả ngày", "Bữa trưa" và "Đồ uống".
Trình đơn này có 3 phần. Phần "Buổi trưa (Có thể từ 11:30 trưa đến 2:30 chiều)",
chỉ làm việc từ 11:30 trưa đến 2:30 chiều, theo mô tả trong đối tượng Availability
.
{ "@type": "Menu", "name": "Coffee Shop A", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "All day food", "menuItemId": ["1", "2"] } { "@type": "MenuItem", "@id": "1", "name": "Mediterranean Bagel", "description": "rocket, scrambled egg, tomato relish, bacon ***Gluten free bagel available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "1", "price": 17.60, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "2", "name": "Club Empire Bagel", "description": "grilled chicken, bacon, rocket, tomato relish ***Gluten Free Bagels Available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "428", "sku": "offer-club-empire-bagel", "menuItemId": "2", "price": 18.90, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "27", "menuId": { "@id": "1535", "displayOrder": 3 }, "name": "Drinks", "menuItemId": ["3", "4"] } { "@type": "MenuItem", "@id": "3", "name": "Cold Brew Coffee", "description": "67% less acid & refreshingly good", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "3", "sku": "offer-cold-brew-coffee", "menuItemId": "3", "price": 8.50, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "4", "name": "English Breakfast Tea", "description": "Not Coffee. Try our tea", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "4", "sku": "offer-english-breakfast-tea", "menuItemId": "4", "price": 5.50, "priceCurrency": "AUD" } { "@type": "Availability", "@id": "85343705", "availabilityStarts": "11:30", "availabilityEnds": "14:30" } { "@type": "MenuSection", "@id": "53", "menuId": { "@id": "1535", "displayOrder": 2 }, "name": "Lunch (Available 11:30am - 2:30pm)", "menuItemId": ["5", "6"], "availabilityId": ["85343705"] } { "@type": "MenuItem", "@id": "5", "name": "Bibimbap", "description": "pulled pork, julienned carrot, cucumber, spring onions, brown rice, pureed kimchi, fried free-range egg.", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "53", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "753", "sku": "offer-bibimbap", "menuItemId": "5", "price": 24.80, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "6", "name": "The Big Chicken", "description": "WA free range handmade chicken burger, lettuce, avocado, bacon, tomato relish on charcoal brioche bun, sweet potato wedges and house made aioli (vegetarian option – spiced lentil burger, just ask us in the notes)", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "53", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "856", "sku": "offer-big-chicken", "menuItemId": "6", "price": 25.60, "priceCurrency": "AUD" }
JSON
Thực đơn cơ bản có các phần "Đồ ăn cả ngày", "Bữa trưa" và "Đồ uống".
Trình đơn này có 3 phần. Phần "Buổi trưa (Có thể từ 11:30 trưa đến 2:30 chiều)",
chỉ làm việc từ 11:30 trưa đến 2:30 chiều, theo mô tả trong đối tượng Availability
. Mục "Bibimbap" trong trình đơn chỉ xuất hiện từ 12:00 trưa đến 1:00 chiều, theo mô tả của Availability
được tham chiếu trong đối tượng MenuItemOffer
tương ứng.
{ "@type": "Menu", "name": "Coffee Shop A", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "All day food", "menuItemId": ["1", "2"] } { "@type": "MenuItem", "@id": "1", "name": "Mediterranean Bagel", "description": "rocket, scrambled egg, tomato relish, bacon ***Gluten free bagel available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "1", "price": 17.60, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "2", "name": "Club Empire Bagel", "description": "grilled chicken, bacon, rocket, tomato relish ***Gluten Free Bagels Available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "4371", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "428", "sku": "offer-club-empire-bagel", "menuItemId": "2", "price": 18.90, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "27", "menuId": { "@id": "1535", "displayOrder": 3 }, "name": "Drinks", "menuItemId": ["3", "4"] } { "@type": "MenuItem", "@id": "3", "name": "Cold Brew Coffee", "description": "67% less acid & refreshingly good", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "3", "sku": "offer-cold-brew-coffee", "menuItemId": "3", "price": 8.50, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "4", "name": "English Breakfast Tea", "description": "Not Coffee. Try our tea", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "27", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "4", "sku": "offer-english-breakfast-tea", "menuItemId": "4", "price": 5.50, "priceCurrency": "AUD" } { "@type": "Availability", "@id": "85343705", "availabilityStarts": "11:30", "availabilityEnds": "14:30" } { "@type": "MenuSection", "@id": "53", "menuId": { "@id": "1535", "displayOrder": 2 }, "name": "Lunch (Available 11:30am - 2:30pm)", "menuItemId": ["5", "6"], "availabilityId": ["85343705"] } { "@type": "MenuItem", "@id": "5", "name": "Bibimbap", "description": "pulled pork, julienned carrot, cucumber, spring onions, brown rice, pureed kimchi, fried free-range egg.", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "53", "displayOrder": 1 } } { "@type": "Availability", "@id": "54767", "availabilityStarts": "12:00", "availabilityEnds": "13:00" } { "@type": "MenuItemOffer", "@id": "753", "sku": "offer-bibimbap", "menuItemId": "5", "price": 24.80, "priceCurrency": "AUD", "availabilityId": ["54767"] } { "@type": "MenuItem", "@id": "6", "name": "The Big Chicken", "description": "WA free range handmade chicken burger, lettuce, avocado, bacon, tomato relish on charcoal brioche bun, sweet potato wedges and house made aioli (vegetarian option – spiced lentil burger, just ask us in the notes)", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png", "parentMenuSectionId": { "@id": "53", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "856", "sku": "offer-big-chicken", "menuItemId": "6", "price": 25.60, "priceCurrency": "AUD" }
JSON
MenuItems với các ưu đãi thay đổi theo giá và thời gian.
Trình đơn có hai phần. Mục " dữ liệu thực tế" trong thực đơn có hai đối tượng MenuItemOffer
tương ứng (một đối tượng cho giá bữa trưa, một đối với giá bữa tối). Giá bữa trưa cho mì ống là 7,49 đô la và giá bữa tối là 10,49 đô la.
{ "@type": "Menu", "name": "Dine-In Menu", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "Main", "description": "Main course", "image": "http://www.provider.com/somerestaurant/main_dishes.jpg", "menuItemId": ["1", "2"] } { "@type": "MenuItem", "@id": "1", "name": "Pizza", "description": "Pizza", "image": "http://www.provider.com/somerestaurant/menuitem/1", "parentMenuSectionId": { "@id": "4371", "displayOrder": 1 } } { "@type": "Availability", "@id": "morning_availability", "availabilityStarts": "08:00", "availabilityEnds": "18:00" } { "@type": "Availability", "@id": "evening_availability", "availabilityStarts": "18:00", "availabilityEnds": "21:00" } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-pizza", "menuItemId": "1", "price": 7.49, "priceCurrency": "USD", "availabilityId": ["morning_availability"] } //Starts at 8:00AM, ends at 6:00PM, last order at 5:59:59PM { "@type": "MenuItem", "@id": "2", "name": "Pasta", "description": "Pasta", "image": "http://www.provider.com/somerestaurant/menuitem/2", "parentMenuSectionId": { "@id": "4371", "displayOrder": 2 } } { "@type": "MenuItemOffer", "@id": "5472", "sku": "offer-pasta-lunch", "menuItemId": "2", "price": 7.49, "priceCurrency": "USD", "availabilityId": ["morning_availability"] } //Starts at 8:00AM, ends at 6:00PM, last order at 5:59:59PM { "@type": "MenuItemOffer", "@id": "174", "sku": "offer-pasta-dinner", "menuItemId": "2", "price": 10.49, "priceCurrency": "USD", "availabilityId": ["evening_availability"] } //Starts at 6:00PM, ends at 9:00PM, last order at 8:59:59PM { "@type": "MenuSection", "@id": "753", "menuId": { "@id": "1535", "displayOrder": 2 }, "name": "Soups & Salads", "description": "Salads and a few choices of soup", "image": "https://www.provider.com/somerestaurant/soup_and_salad_dishes.jpg", "menuItemId": ["3"] } { "@type": "MenuItem", "@id": "3", "name": "Pea Soup", "description": "Creamy pea soup topped with melted cheese and sourdough croutons.", "parentMenuSectionId": { "@id": "1535", "displayOrder": 1 } } { "@type": "MenuItemOffer", "@id": "9763", "sku": "offer-pea-soup", "menuItemId": "3", "price": 3.49, "priceCurrency": "USD" } //Starts at 8:00AM, ends at 6:00PM, last order at 5:59:59PM
Tuỳ chỉnh bằng các tiện ích bổ sung
Các mục trong trình đơn có thể có các tiện ích bổ sung bổ sung. Xác định các tiện ích bổ sung cho một MenuItem
bằng cách tham chiếu các đối tượng MenuSection
với menuAddOnId
. Các đối tượng MenuSection
đó phải chứa các mục trong trình đơn dùng cho tiện ích bổ sung của bạn.
Bạn có thể cung cấp các đối tượng MenuItem
bổ sung mặc định bằng cách sử dụng thuộc tính defaultOptionId
của đối tượng tiện ích bổ sung MenuSection
.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Tiện ích bổ sung cơ bản | Sử dụng các thuộc tính eligibleQuantityMin và eligibleQuantityMax của đối tượng tiện ích bổ sung MenuSection để chỉ định số lượng tiện ích bổ sung tối thiểu và tối đa có thể chọn trong phần tiện ích bổ sung. |
Trường hợp sử dụng 2: Tiện ích bổ sung mặc định | Hãy sử dụng một phần phụ trợ MenuSection của đối tượng tiện ích bổ sung
defaultOptionId để cung cấp các tuỳ chọn tiện ích bổ sung mặc định. |
Trường hợp sử dụng 3: Gói/gói ăn uống | Sử dụng các đối tượng MenuSection để mô tả các lựa chọn mà người dùng có thể thực hiện khi chọn món ăn/kết hợp. |
JSON
Trong ví dụ này, mục trình đơn "Cappbrandno" có thể tuỳ chỉnh bằng tuỳ chọn ống hút.
Có một lựa chọn bổ sung khác cho món "Gagel Địa Trung Hải" trong mục "Thực phẩm ăn cả ngày" và hai lựa chọn bổ sung là trứng.
Mục "Club Bagel" trong cùng mục trình đơn có sẵn các tiện ích bổ sung bổ sung, cùng với tuỳ chọn bổ sung "Egg Options" của trứng được xáo trộn.
Trong phần đồ uống, có một mặt hàng bổ sung là "Tuỳ chọn bổ sung sữa" và "Tuỳ chọn ống hút".
{ "@type": "Menu", "name": "Coffee Shop A", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "All day food", "menuItemId": ["1", "12"] } { "@type": "MenuItem", "@id": "1", "name": "Mediterranean Bagel", "description": "rocket, scrambled egg, tomato relish, bacon ***Gluten free bagel available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "1", "price": 17.60, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "362", "name": "Extras", "menuItemId": ["2"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 1 }] } { "@type": "MenuItem", "@id": "2", "name": "Chorizo" } { "@type": "MenuItemOffer", "@id": "74", "sku": "offer-addon-chorizo", "menuItemId": "2", "price": 6.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5374", "name": "Egg Options", "menuItemId": ["8", "9"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 2 } { "@type": "MenuItem", "@id": "8", "name": "No Extra Egg" } { "@type": "MenuItemOffer", "@id": "4527", "sku": "offer-addon-no-egg", "menuItemId": "8", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "9", "name": "Extra Egg - Fried" } { "@type": "MenuItemOffer", "@id": "99", "sku": "offer-addon-fried-egg", "menuItemId": "9", "price": 3.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "12", "name": "Club Bagel", "description": "grilled chicken, bacon, rocket, tomato relish ***Gluten Free Bagels Available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "428", "sku": "offer-club-empire-bagel", "menuItemId": "12", "price": 18.90, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "3865", "name": "Extras", "menuItemId": ["2", "13"], "parentMenuItemId": [{ "@id": "12", "displayOrder": 1 }], "eligibleQuantityMin": 0, "eligibleQuantityMax": 2 } { "@type": "MenuItem", "@id": "13", "name": "Free Range Bacon" } { "@type": "MenuItemOffer", "@id": "832", "sku": "offer-addon-bacon", "menuItemId": "13", "price": 6.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5428", "name": "Egg Options", "menuItemId": ["8", "9", "14"], "parentMenuItemId": [{ "@id": "12", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 2 } { "@type": "MenuItem", "@id": "14", "name": "Scrambled Egg" } { "@type": "MenuItemOffer", "@id": "546", "sku": "offer-scrambled-egg", "menuItemId": "14", "price": 3.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "531", "menuId": { "@id": "1535", "displayOrder": 2 }, "name": "Lunch (Available 11:30am - 2:30pm)", "menuItemId": ["15"] } { "@type": "MenuItem", "@id": "15", "name": "Bibimbap", "description": "pulled pork, julienned carrot, cucumber, spring onions, brown rice, pureed kimchi, fried free-range egg.", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "753", "sku": "offer-bibimbap", "menuItemId": "15", "price": 24.80, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "27", "menuId": { "@id": "1535", "displayOrder": 3 }, "name": "Drinks", "menuItemId": ["17"] } { "@type": "MenuItem", "@id": "17", "name": "Cappuccino", "description": "Milk Foam over a cup of espresso, topped with chocolate powder art", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "1743", "sku": "offer-cappucino", "menuItemId": "17", "price": 6.50, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "4527", "name": "Milk", "menuItemId": ["18"], "parentMenuItemId": [{ "@id": "17", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "18", "name": "Skim" } { "@type": "MenuItemOffer", "@id": "4588", "sku": "offer-addon-skim-milk", "menuItemId": "18", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5427", "name": "Straw Option", "menuItemId": ["22"], "parentMenuItemId": [{ "@id": "17", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "22", "name": "Plastic Straw" } { "@type": "MenuItemOffer", "@id": "4587", "sku": "offer-addon-plastic-straw", "menuItemId": "22", "price": 0.05, "priceCurrency": "AUD", "eligibleQuantityMax": 1 }
JSON
Trong ví dụ này, mục trình đơn "Club Bagel" được chọn sẵn bằng lựa chọn chorizo và trứng xáo trộn. Chorizo và Sauli Sauly là các tiện ích bổ sung "bổ sung" mặc định và trứng được xáo trộn là tiện ích bổ sung "Egg Option" mặc định.
{ "@type": "Menu", "name": "Coffee Shop A", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "All day food", "menuItemId": ["1", "12"] } { "@type": "MenuItem", "@id": "1", "name": "Mediterranean Bagel", "description": "rocket, scrambled egg, tomato relish, bacon ***Gluten free bagel available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-mediterranean-bagel", "menuItemId": "1", "price": 17.60, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "362", "name": "Extras", "menuItemId": ["2"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 1 }] } { "@type": "MenuItem", "@id": "2", "name": "Chorizo" } { "@type": "MenuItemOffer", "@id": "74", "sku": "offer-addon-chorizo", "menuItemId": "2", "price": 6.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5374", "name": "Egg Options", "menuItemId": ["8", "9"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 2 } { "@type": "MenuItem", "@id": "8", "name": "No Extra Egg" } { "@type": "MenuItemOffer", "@id": "4527", "sku": "offer-addon-no-egg", "menuItemId": "8", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "9", "name": "Extra Egg - Fried" } { "@type": "MenuItemOffer", "@id": "99", "sku": "offer-addon-fried-egg", "menuItemId": "9", "price": 3.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "12", "name": "Club Bagel", "description": "grilled chicken, bacon, rocket, tomato relish ***Gluten Free Bagels Available***", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "428", "sku": "offer-club-empire-bagel", "menuItemId": "12", "price": 18.90, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "3865", "name": "Extras", "menuItemId": ["2", "13", "25"], "parentMenuItemId": [{ "@id": "12", "displayOrder": 1 }], "eligibleQuantityMin": 0, "eligibleQuantityMax": 2, "defaultItemId": ["2", "25"] } { "@type": "MenuItem", "@id": "13", "name": "Free Range Bacon" } { "@type": "MenuItemOffer", "@id": "832", "sku": "offer-addon-bacon", "menuItemId": "13", "price": 6.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "25", "name": "Chili Sauce" } { "@type": "MenuItemOffer", "@id": "7337", "sku": "offer-addon-chili-sauce", "menuItemId": "25", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5428", "name": "Egg Options", "menuItemId": ["8", "9", "14"], "parentMenuItemId": [{ "@id": "12", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 2, "defaultItemId": ["14"] } { "@type": "MenuItem", "@id": "14", "name": "Scrambled Egg" } { "@type": "MenuItemOffer", "@id": "546", "sku": "offer-scrambled-egg", "menuItemId": "14", "price": 3.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "27", "menuId": { "@id": "1535", "displayOrder": 3 }, "name": "Drinks", "menuItemId": ["17"] } { "@type": "MenuItem", "@id": "17", "name": "Cappuccino", "description": "Milk Foam over a cup of espresso, topped with chocolate powder art", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "1743", "sku": "offer-cappucino", "menuItemId": "17", "price": 6.50, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "4527", "name": "Milk", "menuItemId": ["18"], "parentMenuItemId": [{ "@id": "17", "displayOrder": 1 }, { "@id": "24", "displayOrder": 2 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "18", "name": "Skim" } { "@type": "MenuItemOffer", "@id": "4588", "sku": "offer-addon-skim-milk", "menuItemId": "18", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5427", "name": "Straw Option", "menuItemId": ["22"], "parentMenuItemId": [{ "@id": "17", "displayOrder": 1 }, { "@id": "24", "displayOrder": 2 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "22", "name": "Plastic Straw" } { "@type": "MenuItemOffer", "@id": "4587", "sku": "offer-addon-plastic-straw", "menuItemId": "22", "price": 0.05, "priceCurrency": "AUD", "eligibleQuantityMax": 1 }
JSON
Ví dụ này bao gồm một bữa ăn kết hợp bao gồm bánh mì kẹp thịt, khoai tây chiên và một món đồ uống. Mỗi thực phẩm đều có thể tuỳ chỉnh với các lớp phủ và tiện ích bổ sung khác nhau.
Món ăn kết hợp gồm 1 bánh mì kẹp, 1 khoai tây chiên và 1 đồ uống theo yêu cầu của người dùng. Có 2 lựa chọn bánh mì kẹp và mỗi lựa chọn có 2 phần bổ sung: "Công thức" (hai mục trong trình đơn, người dùng phải chọn 0-1) và "Bổ sung" (ba mục trong trình đơn, người dùng phải chọn 0-3).
{ "@type": "Menu", "name": "FastFood B", "@id": "1535" } { "@type": "MenuSection", "@id": "4371", "menuId": { "@id": "1535", "displayOrder": 1 }, "name": "Combo Meals", "menuItemId": ["1"] } { "@type": "MenuItem", "@id": "1", "name": "Burger Combo ABox", "description": "1 Burger, 1 Fries, 1 Drink", "image": "https://www.gstatic.com/mobilesdk/170329_assistant/assistant_color_28dp.png" } { "@type": "MenuItemOffer", "@id": "6680262", "sku": "offer-burger-combo-a", "menuItemId": "1", "price": 16.95, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "362", "name": "Burger", "menuItemId": ["2", "3"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 1 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "2", "name": "Fillet Burger" } { "@type": "MenuItemOffer", "@id": "74", "sku": "offer-burger-fillet", "menuItemId": "2", "price": 0.00, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "3", "name": "Zinger filler Burger" } { "@type": "MenuItemOffer", "@id": "42", "sku": "offer-burger-zinger-filler", "menuItemId": "3", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 1 } { "@type": "MenuSection", "@id": "5374", "name": "Recipe", "menuItemId": ["13", "25"], "parentMenuItemId": [{ "@id": "2", "displayOrder": 1 }, { "@id": "3", "displayOrder": 1 }], "eligibleQuantityMin": 0, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "13", "name": "Lettuce" } { "@type": "MenuItemOffer", "@id": "832", "sku": "offer-lettuce", "menuItemId": "13", "price": 0.00, "priceCurrency": "AUD" } { "@type": "MenuItem", "@id": "25", "name": "Mayo" } { "@type": "MenuItemOffer", "@id": "7337", "sku": "offer-mayo", "menuItemId": "25", "price": 0.00, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "3865", "name": "Extras", "menuItemId": ["22", "23", "24"], "parentMenuItemId": [{ "@id": "2", "displayOrder": 1 }, { "@id": "3", "displayOrder": 1 }], "eligibleQuantityMin": 0, "eligibleQuantityMax": 3 } { "@type": "MenuItem", "@id": "22", "name": "Bacon Slice" } { "@type": "MenuItemOffer", "@id": "4588", "sku": "offer-extra-bacon-slice", "menuItemId": "22", "price": 0.50, "priceCurrency": "AUD", "eligibleQuantityMax": 10 } { "@type": "MenuItem", "@id": "23", "name": "Cheese Slice" } { "@type": "MenuItemOffer", "@id": "53865", "sku": "offer-extra-cheese-slice", "menuItemId": "23", "price": 0.50, "priceCurrency": "AUD", "eligibleQuantityMax": 10 } { "@type": "MenuItem", "@id": "24", "name": "Coleslaw" } { "@type": "MenuItemOffer", "@id": "3", "sku": "offer-extra-coleslaw", "menuItemId": "24", "price": 0.30, "priceCurrency": "AUD", "eligibleQuantityMax": 10 } { "@type": "MenuSection", "@id": "5428", "name": "Fries", "menuItemId": ["14"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 2 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "14", "name": "Regular Fries" } { "@type": "MenuItemOffer", "@id": "546", "sku": "offer-fries", "menuItemId": "14", "price": 0.00, "priceCurrency": "AUD" } { "@type": "MenuSection", "@id": "27", "name": "Drinks", "menuItemId": ["17", "18"], "parentMenuItemId": [{ "@id": "1", "displayOrder": 3 }], "eligibleQuantityMin": 1, "eligibleQuantityMax": 1 } { "@type": "MenuItem", "@id": "17", "name": "Regular Pepsi Max" } { "@type": "MenuItemOffer", "@id": "1743", "sku": "offer-pepsi-max", "menuItemId": "17", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 2 } { "@type": "MenuItem", "@id": "18", "name": "Regular Pepsi" } { "@type": "MenuItemOffer", "@id": "4587", "sku": "offer-pepsi", "menuItemId": "18", "price": 0.00, "priceCurrency": "AUD", "eligibleQuantityMax": 2 }
Tuỳ chỉnh bằng các mục trong trình đơn
Bạn có thể cung cấp nhiều tuỳ chọn cho một MenuItem
bằng cách tham chiếu thuộc tính đó trong
thuộc tính menuItemId
của MenuItemOption
.
Ví dụ: nếu pizza có nhiều kích thước, bạn có thể tạo một MenuItemOption
cho mỗi kích thước và tham chiếu mục trong trình đơn pizza trong thuộc tính menuItemId
cho từng MenuItemOption
.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Pizza có nhiều kích cỡ | Sử dụng MenuItemOption và MenuItemOffer |
Trường hợp sử dụng 2: Pizza có thể tuỳ chỉnh với các loại nhân và kích cỡ khác nhau | Hãy sử dụng MenuItemOption và MenuItemOffer để thay đổi giá topping dựa trên kích thước của pizza. |
Trường hợp sử dụng 3: Pizza có thể tuỳ chỉnh, có sự khác biệt giữa bên trái và bên phải | Sử dụng thuộc tính value của MenuItemOption để chỉ định cạnh của pizza. Hãy dùng các thuộc tính price và priceCurrency của MenuItemOffer để chỉ định giá cho mỗi món pizza. |
NDJSON
Pizza có 3 kích thước và yêu cầu người dùng chọn. Giá của mỗi kích thước là khác nhau.
Pizza Hawaii có giá 10 đô la cho một chiếc bánh nhỏ, 15 đô la cho một món vừa và 20 đô la cho một chiếc pizza lớn.
{"@type":"Menu","name":"A's Pizza","@id":"menu-1"} {"@type":"MenuSection","@id":"pizza-section","menuId":{"@id":"menu-1","displayOrder":1},"name":"Pizzas","menuItemId":["piz-hwn"]} {"@type":"MenuItem","@id":"piz-hwn","name":"Hawaiian Pizza"} {"@type":"MenuItemOption","@id":"piz-hwn-opt-sml","menuItemId":{"@id":"piz-hwn","displayOrder":1}, "optionType": "SIZE", "value": "Small"} {"@type":"MenuItemOption","@id":"piz-hwn-opt-med","menuItemId":{"@id":"piz-hwn","displayOrder":2}, "optionType": "SIZE", "value": "Medium"} {"@type":"MenuItemOption","@id":"piz-hwn-opt-lge","menuItemId":{"@id":"piz-hwn","displayOrder":3}, "optionType": "SIZE", "value": "Large"} {"@type":"MenuItemOffer","@id":"piz-hwn-off-sml","sku":"123456","menuItemOptionId":"piz-hwn-opt-sml","price":10.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-hwn-off-med","sku":"123457","menuItemOptionId":"piz-hwn-opt-med","price":15.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-hwn-off-lge","sku":"123458","menuItemOptionId":"piz-hwn-opt-lge","price":20.00,"priceCurrency":"USD"}
NDJSON
Giá của các món pizza ở tuỳ theo kích thước của pizza.
Một chiếc Pepperoni Pizza có giá 10 đô la cho loại nhỏ, 15 đô la cho loại vừa và 20 đô la cho loại lớn. Topping Salami thịt bò là 1 đô la cho loại nhỏ, 1, 5 đô la cho loại vừa và 2 đô la cho loại nhỏ.
{"@type":"Menu","name":"A's Pizza","@id":"menu-1"} {"@type":"MenuSection","@id":"pizza-section","menuId":{"@id":"menu-1","displayOrder":1},"name":"Pizzas","menuItemId":["piz-pep"]} {"@type":"MenuItem","@id":"piz-pep","name":"Hawaiian Pizza"} {"@type":"MenuItemOption","@id":"piz-pep-opt-sml","menuItemId":{"@id":"piz-pep","displayOrder":1}, "optionType": "SIZE", "value": "Small"} {"@type":"MenuItemOption","@id":"piz-pep-opt-med","menuItemId":{"@id":"piz-pep","displayOrder":2}, "optionType": "SIZE", "value": "Medium"} {"@type":"MenuItemOption","@id":"piz-pep-opt-lge","menuItemId":{"@id":"piz-pep","displayOrder":3}, "optionType": "SIZE", "value": "Large"} {"@type":"MenuItemOffer","@id":"piz-pep-off-sml","sku":"123456","menuItemOptionId":"piz-pep-opt-sml","price":10.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-pep-off-med","sku":"123457","menuItemOptionId":"piz-pep-opt-med","price":15.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-pep-off-lge","sku":"123458","menuItemOptionId":"piz-pep-opt-lge","price":20.00,"priceCurrency":"USD"} {"@type": "MenuSection","@id": "topping-section","menuId": {"@id": "menu-1","displayOrder": 2},"name": "Choice of toppings","menuItemId": ["top-bef-sal"],"parentMenuItemId": [{"@id": "piz-pep","displayOrder": 1}]} {"@type": "MenuItem","@id": "top-bef-sal","name": "Beef Salami","parentMenuSectionId": {"@id": "topping-section","displayOrder": 1}} {"@type": "MenuItemOption","@id": "opt-bef-sal-sml","menuItemId": {"@id": "top-bef-sal", "displayOrder": "1"},"applicableParentOptionValue": "Small"} {"@type": "MenuItemOption","@id": "opt-bef-sal-med","menuItemId": {"@id": "top-bef-sal", "displayOrder": "2"},"applicableParentOptionValue": "Medium"} {"@type": "MenuItemOption","@id": "opt-bef-sal-lge","menuItemId": {"@id": "top-bef-sal", "displayOrder": "3"},"applicableParentOptionValue": "Large"} {"@type": "MenuItemOffer","@id": "bef-sal-off-sml","sku": "123561","menuItemOptionId": "opt-bef-sal-sml","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOffer","@id": "bef-sal-off-med","sku": "123562","menuItemOptionId": "opt-bef-sal-med","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItemOffer","@id": "bef-sal-off-lge","sku": "123563","menuItemOptionId": "opt-bef-sal-lge","price": 2.00,"priceCurrency": "USD"}
NDJSON
Bạn có thể thêm lớp phủ pizza ở nửa bên trái, nửa bên phải hoặc toàn bộ pizza. Giá của pizza thay đổi tuỳ theo kích thước pizza, cũng như nơi có món ăn kèm.
Một chiếc Pizza Pepperoni nhỏ là 10 đô la cho một chiếc nhỏ, 15 đô la cho một chiếc trung bình và 20 đô la cho một chiếc lớn. Pizza có 2 lớp nhân phủ (Bò Salami và Mozzarella) và mỗi lớp phủ bên trái và bên phải của pizza nhỏ có giá 100000 VND nhưng mỗi bánh lại là 0,50$ cho toàn bộ pizza nhỏ. Thành phần có giá 1,5 đô la cho mỗi bên cho pizza bên trái và bên phải, nhưng 1,00 đô la cho toàn bộ pizza vừa. Topping có giá 2 đô la cho mỗi phần bên trái và bên phải của pizza cỡ lớn, nhưng 1,5 đô la cho toàn bộ phần pizza.
{"@type":"Menu","name":"A's Pizza","@id":"menu-1"} {"@type":"MenuSection","@id":"pizza-section","menuId":{"@id":"menu-1","displayOrder":1},"name":"Pizzas","menuItemId":["piz-pep"]} {"@type":"MenuItem","@id":"piz-pep","name":"Pepperoni Pizza"} {"@type":"MenuItemOption","@id":"piz-pep-opt-sml","menuItemId":{"@id":"piz-pep","displayOrder":1}, "optionType": "SIZE", "value": "Small"} {"@type":"MenuItemOption","@id":"piz-pep-opt-med","menuItemId":{"@id":"piz-pep","displayOrder":2}, "optionType": "SIZE", "value": "Medium"} {"@type":"MenuItemOption","@id":"piz-pep-opt-lge","menuItemId":{"@id":"piz-pep","displayOrder":3}, "optionType": "SIZE", "value": "Large"} {"@type":"MenuItemOffer","@id":"piz-pep-off-sml","sku":"123456","menuItemOptionId":"piz-pep-opt-sml","price":10.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-pep-off-med","sku":"123457","menuItemOptionId":"piz-pep-opt-med","price":15.00,"priceCurrency":"USD"} {"@type":"MenuItemOffer","@id":"piz-pep-off-lge","sku":"123458","menuItemOptionId":"piz-pep-opt-lge","price":20.00,"priceCurrency":"USD"} {"@type": "MenuSection","@id": "topping-section","name": "Choice of toppings","menuItemId": ["top-bef-sal", "top-moz"],"parentMenuItemId": [{"@id": "piz-pep", "displayOrder": 1}]} {"@type": "MenuItem","@id": "top-bef-sal","name": "Beef Salami","parentMenuSectionId": {"@id": "topping-section", "displayOrder": 1}} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-left-sm","menuItemId": {"@id": "top-bef-sal","displayOrder": 1},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "bef-sal-off-left-sm","sku": "546","menuItemOptionId": "top-bef-sal-opt-left-sm","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-right-sm","menuItemId": {"@id": "top-bef-sal","displayOrder": 2},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "bef-sal-off-right-sm","sku": "37","menuItemOptionId": "top-bef-sal-opt-right-sm","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-whole-sm","menuItemId": {"@id": "top-bef-sal","displayOrder": 3},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "bef-sal-off-whole-sm","sku": "356","menuItemOptionId": "top-bef-sal-opt-whole-sm","price": 0.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-left-med","menuItemId": {"@id": "top-bef-sal","displayOrder": 1},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "bef-sal-off-left-medium","sku": "764","menuItemOptionId": "top-bef-sal-opt-left-med","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-right-med","menuItemId": {"@id": "top-bef-sal","displayOrder": 2},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "bef-sal-off-right-medium","sku": "476","menuItemOptionId": "top-bef-sal-opt-right-med","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-whole-med","menuItemId": {"@id": "top-bef-sal","displayOrder": 3},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "offer-beef-salami-whole-medium","sku": "2354","menuItemOptionId": "top-bef-sal-opt-whole-med","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-left-lg","menuItemId": {"@id": "top-bef-sal","displayOrder": 1},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "offer-beef-salami-left-large","sku": "56","menuItemOptionId": "top-bef-sal-opt-left-lg","price": 2.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-right-lg","menuItemId": {"@id": "top-bef-sal","displayOrder": 2},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "offer-beef-salami-right-large","sku": "35","menuItemOptionId": "top-bef-sal-opt-right-lg","price": 2.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-bef-sal-opt-whole-lg","menuItemId": {"@id": "top-bef-sal","displayOrder": 3},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "offer-beef-salami-whole-large","sku": "243","menuItemOptionId": "top-bef-sal-opt-whole-lg","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItem","@id": "top-moz","name": "Mozzarella","parentMenuSectionId": {"@id": "topping-section", "displayOrder": 2}} {"@type": "MenuItemOption","@id": "top-moz-opt-left-sm","menuItemId": {"@id": "top-moz","displayOrder": 1},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "off-mozz-left-sm","sku": "5643","menuItemOptionId": "top-moz-opt-left-sm","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-right-sm","menuItemId": {"@id": "top-moz","displayOrder": 2},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "off-mozz-right-sm","sku": "426","menuItemOptionId": "top-moz-opt-right-sm","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-whole-sm","menuItemId": {"@id": "top-moz","displayOrder": 3},"applicableParentOptionValue": "Small","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "off-mozz-whole-sm","sku": "7546","menuItemOptionId": "top-moz-opt-whole-sm","price": 0.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-left-med","menuItemId": {"@id": "top-moz","displayOrder": 1},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "off-mozz-left-med","sku": "5465","menuItemOptionId": "top-moz-opt-left-med","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-right-med","menuItemId": {"@id": "top-moz","displayOrder": 2},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "off-mozz-right-med","sku": "76","menuItemOptionId": "top-moz-opt-right-med","price": 1.50,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-whole-med","menuItemId": {"@id": "top-moz","displayOrder": 3},"applicableParentOptionValue": "Medium","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "off-mozz-whole-med","sku": "34","menuItemOptionId": "top-moz-opt-whole-med","price": 1.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-left-lge","menuItemId": {"@id": "top-moz","displayOrder": 1},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_LEFT"} {"@type": "MenuItemOffer","@id": "off-mozz-left-lge","sku": "5536","menuItemOptionId": "top-moz-opt-left-lge","price": 2.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-right-lge","menuItemId": {"@id": "top-moz","displayOrder": 2},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_RIGHT"} {"@type": "MenuItemOffer","@id": "off-mozz-right-lge","sku": "545","menuItemOptionId": "top-moz-opt-right-lge","price": 2.00,"priceCurrency": "USD"} {"@type": "MenuItemOption","@id": "top-moz-opt-whole-lge","menuItemId": {"@id": "top-moz","displayOrder": 3},"applicableParentOptionValue": "Large","optionType": "PIZZA_SIDE","value": "PIZZA_SIDE_WHOLE"} {"@type": "MenuItemOffer","@id": "off-mozz-whole-lge","sku": "744","menuItemOptionId": "top-moz-opt-whole-lge","price": 1.50,"priceCurrency": "USD"}
Dịch vụ
Thực thể Service
xác định việc phân phối một Hành động đặt món ăn từ một nhà hàng, chẳng hạn như loại dịch vụ. Giờ làm việc, khu vực phục vụ và phí được mô tả trong các thực thể ServiceArea
, ServiceHours
, OperationHours
và Fee
.
Một Nhà hàng có thể xác định nhiều đối tượng Dịch vụ (ví dụ: nếu một nhà hàng hỗ trợ cả dịch vụ giao hàng và mua mang đi), nhưng một Dịch vụ phải được kết nối riêng với một Nhà hàng bằng thuộc tính serviceType
của Dịch vụ.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Dịch vụ giao hàng cơ bản | Sử dụng các thuộc tính opens và closes trong ServiceHours và OperationHours để chỉ định thời gian bắt đầu và kết thúc mà người dùng có thể thực hiện (hoàn tất) đơn đặt hàng và đặt hàng tương ứng. Để chỉ định thời gian thực hiện giao hàng (thời gian
nhận hàng/giao hàng dự kiến), hãy sử dụng các thuộc tính leadTimeMin và
leadTimeMax của ServiceHours . |
JSON
Dịch vụ mẫu sau đây chấp nhận các đơn đặt hàng hàng ngày từ 8 giờ sáng đến 6 giờ chiều (từ 5:59:59 tối) ngày 1 tháng 2 năm 2016 đến ngày 1 tháng 3 năm 2016 và thời gian chờ tối thiểu là 1 giờ và thời gian chờ tối đa là 90 phút. Dịch vụ giao hàng được cung cấp theo mã bưu chính 94041 ở Hoa Kỳ. Người dùng phải trả phí giao hàng 5 USD.
{ "@type": "Service", "@id": "10824/delivery", "serviceType": "DELIVERY", "menuId": "10824", "restaurantId": "10824" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "postalCode": 94041, "addressCountry": "US" } { "@type": "OperationHours", "@id": "10824/deliveryOh", "serviceId": "10824/delivery", "validFrom": "2016-02-01T00:00:00-07:00", "validThrough": "2016-03-01T00:00:00-07:00", "opens": "T08:00", "closes": "T18:00" } { "@type": "ServiceHours", "@id": "613741/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "Fee", "@id": "28427", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 5.0 }
Giờ giao và đến lấy hàng
Các ví dụ dưới đây trình bày cách xác định giờ giao hàng và đến lấy hàng của một dịch vụ.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Cấu hình giờ giao hàng | Sử dụng các thuộc tính leadTimeMin và leadTimeMax của ServiceHours cho các đơn đặt hàng sớm nhất có thể. Sử dụng
OperationHours để đặt hàng trước. Sử dụng thuộc tính isSpecialHour của ServiceHours và OperationHours cho giờ giao hàng đặc biệt và thời gian đặt hàng trong ngày lễ |
Trường hợp sử dụng 2: Cấu hình giờ đến lấy hàng | Sử dụng các thuộc tính leadTimeMin và leadTimeMax của ServiceHours cho các đơn đặt hàng sớm nhất có thể. Sử dụng
OperationHours để đặt hàng trước. Hãy sử dụng thuộc tính isSpecialHour của ServiceHours và OperationHours cho khung giờ nhận hàng và thời gian đặt hàng đặc biệt của mùa lễ. |
JSON
Nhà hàng chấp nhận giao hàng sớm nhất có thể và đặt hàng trước cho dịch vụ giao hàng. API này cũng hỗ trợ giờ giao hàng đặc biệt trong ngày lễ.
Trong ví dụ này, người dùng có thể đặt hàng trực tuyến bất cứ lúc nào. Giờ giao hàng trong tuần là từ 9 giờ sáng đến 11 giờ tối. Giờ giao hàng cuối tuần là từ 9 giờ sáng đến 9 giờ tối. Cụ thể, vào ngày 24 tháng 12 năm 2019, thời gian giao hàng là từ 9 giờ sáng đến 4 giờ chiều. Dịch vụ này cung cấp thời gian chờ tối thiểu là 1 giờ và thời gian chờ tối đa là 90 phút.
Người dùng có thể đặt hàng trước từ 6 ngày (8640 phút) đến 1 giờ đối với bất kỳ ngày nào, bao gồm cả ngày 24 tháng 12 năm 2019. Người dùng chỉ có thể đặt hàng trước với đơn hàng giao trước theo khoảng thời gian 15 phút (ví dụ: 8 giờ tối, 8 giờ 15 tối, 8 giờ 30 tối). Dịch vụ giao hàng được cung cấp trong một khu vực đa giác được mô tả trong mã và có phí giao hàng là 5 đô la cho người dùng.
{ "@type": "Service", "@id": "10824/delivery", "serviceType": "DELIVERY", "menuId": "10824", "restaurantId": "10824" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["-20.728777 116.804256 -20.736323 116.8161 -20.722997 116.86468 -20.725406 116.871547 -20.736323 116.873607 -20.7474 116.816444 -20.756871 116.819877 -20.757673 116.788291 -20.740497 116.786403"] } { "@type": "OperationHours", "@id": "427/deliveryOh", "serviceId": "10824/delivery", "opens": "T00:00", "closes": "T23:59", "isSpecialHour": false } { "@type": "ServiceHours", "@id": "613741/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "operationHoursId":["427/deliveryOh"], "opens": "T09:00", "closes": "T23:00", "dayOfWeek": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "leadTimeMin": 60, "leadTimeMax": 90, "isSpecialHour": false } { "@type": "ServiceHours", "@id": "3654/delivery", "orderType": "ADVANCE", "serviceId": "10824/delivery", "operationHoursId":["427/deliveryOh"], "opens": "T09:00", "closes": "T23:00", "dayOfWeek": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "advanceBookingRequirementMin": 60, "advanceBookingRequirementMax": 8640, "advanceBookingSlotInterval": "PT15M", "isSpecialHour":false } { "@type": "ServiceHours", "@id": "4694/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "operationHoursId":["427/deliveryOh"], "opens": "T09:00", "closes": "T21:00", "dayOfWeek": ["SATURDAY", "SUNDAY"], "leadTimeMin": 60, "leadTimeMax": 90, "isSpecialHour": false } { "@type": "ServiceHours", "@id": "6479/delivery", "orderType": "ADVANCE", "serviceId": "10824/delivery", "operationHoursId":["427/deliveryOh"], "opens": "T09:00", "closes": "T21:00", "dayOfWeek": ["SATURDAY", "SUNDAY"], "advanceBookingRequirementMin": 60, "advanceBookingRequirementMax": 8640, "advanceBookingSlotInterval": "PT15M", "isSpecialHour":false } { "@type": "ServiceHours", "@id": "3754/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "validFrom": "2019-12-24T00:00:00+10:00", "validThrough": "2019-12-24T23:59:59+10:00", "opens": "T09:00", "closes": "T16:00", "leadTimeMin": 60, "leadTimeMax": 90, "isSpecialHour": true } { "@type": "Fee", "@id": "28427", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 5.00 }
JSON
Nhà hàng chấp nhận giao hàng sớm nhất có thể và đặt hàng trước cho dịch vụ đến lấy hàng. Dữ liệu này cũng hỗ trợ giờ đến lấy hàng đặc biệt trong mùa lễ.
Trong ví dụ này, người dùng có thể bắt đầu đặt hàng trực tuyến 2 giờ trước khi giờ phục vụ bắt đầu. Giờ đến lấy hàng trong tuần là từ 9 giờ sáng đến 11 giờ tối. Giờ đến lấy hàng cuối tuần là từ 9 giờ sáng đến 9 giờ tối. Cụ thể, vào ngày 24 tháng 12 năm 2019, giờ đến lấy hàng là từ 9 giờ sáng đến 4 giờ chiều. Tính năng đến lấy hàng có thời gian chờ tối thiểu là 30 phút và thời gian chờ tối đa là 1 giờ.
Người dùng có thể đặt hàng trước từ 2 ngày (2880 phút) đến 30 phút cho bất kỳ ngày nào, bao gồm cả ngày 24 tháng 12 năm 2019. Người dùng chỉ có thể đặt trước đơn đặt hàng tự đến lấy với mức tăng dần là 15 phút (ví dụ: 8 giờ tối, 8 giờ 15 tối, 8 giờ 30 tối). Người dùng không phải trả phí nhận hàng.
{ "@type": "Service", "@id": "10824/takeout", "serviceType": "TAKEOUT", "menuId": "10824", "restaurantId": "10824" } { "@type": "OperationHours", "@id": "427/takeoutOh", "serviceId": "10824/takeout", "opens": "T07:00", "closes": "T23:00", "dayOfWeek": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"] } { "@type": "OperationHours", "@id": "2652/takeoutOh", "serviceId": "10824/takeout", "opens": "T07:00", "closes": "T21:00", "dayOfWeek": ["SATURDAY", "SUNDAY"] } { "@type": "ServiceHours", "@id": "613741/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "operationHoursId":["427/takeoutOh"], "opens": "T09:00", "closes": "T23:00", "dayOfWeek": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "leadTimeMin": 30, "leadTimeMax": 60, "isSpecialHour": false } { "@type": "ServiceHours", "@id": "3654/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "operationHoursId":["427/takeoutOh", "2652/takeoutOh"], "opens": "T09:00", "closes": "T23:00", "dayOfWeek": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"], "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M", "isSpecialHour": false } { "@type": "ServiceHours", "@id": "4694/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "operationHoursId": ["2652/takeoutOh"], "opens": "T09:00", "closes": "T21:00", "dayOfWeek": ["SATURDAY", "SUNDAY"], "leadTimeMin": 30, "leadTimeMax": 60, "isSpecialHour": false } { "@type": "ServiceHours", "@id": "6479/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "operationHoursId": ["427/takeoutOh", "2652/takeoutOh"], "opens": "T09:00", "closes": "T21:00", "dayOfWeek": ["SATURDAY", "SUNDAY"], "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M", "isSpecialHour": false } { "@type": "ServiceHours", "@id": "3754/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "validFrom": "2019-12-24T00:00:00+10:00", "validThrough": "2019-12-24T23:59:59+10:00", "opens": "T09:00", "closes": "T16:00", "leadTimeMin": 30, "leadTimeMax": 60, "isSpecialHour": true }
Ngày lễ và giờ đặc biệt
Bạn có thể sử dụng thuộc tính isSpecialHour
của ServiceHours
và OperationHours
để ghi đè giờ làm việc và/hoặc giờ hoạt động hiện tại. Phương pháp này cho phép bạn xác định giờ hoạt động thông thường một lần và ghi đè một cách có chọn lọc đối với các ngày lễ và sự kiện đặc biệt.
Có hai khung thời gian riêng biệt mà bạn phải chỉ định để thực hiện dịch vụ: cửa sổ đặt hàng (OperationHours
, xác định thời điểm người dùng có thể đặt hàng) và cửa sổ thực hiện (ServiceHours
, chỉ định thời điểm có thể thực hiện đơn đặt hàng).
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Mở đơn đặt hàng cùng ngày nhưng đóng cửa cho các đơn đặt hàng nâng cao | Để chỉ định ngày mà giờ đặc biệt hợp lệ, hãy sử dụng thuộc tính validFrom và validThrough của các thực thể ServiceHours và OperationHours (với thuộc tính isSpecialHour được đặt thành "true"). |
JSON
Ví dụ này chỉ định rằng dịch vụ mở cửa cho các đơn đặt hàng cùng ngày vào ngày Giáng sinh nhưng đóng cửa cho các đơn đặt hàng trước được lên lịch cho ngày đó. Nhà hàng chấp nhận giao hàng sớm nhất có thể và đặt hàng trước cho dịch vụ đến lấy hàng.
Giờ đến lấy hàng thông thường (bao gồm cả giờ đặt món và giờ phục vụ) là từ 9 giờ sáng đến 9 giờ tối và giờ đón tại Giáng sinh năm 2017 diễn ra từ 9 giờ sáng đến 4 giờ chiều. Tính năng đến lấy hàng có thời gian chờ tối thiểu là 1 giờ và thời gian chờ tối đa là 90 phút. Người dùng có thể đặt hàng trước từ 2 ngày (2880 phút) đến 30 phút đối với bất kỳ ngày nào, nhưng không thể đặt hàng vào các ngày đóng cửa vào ngày/giờ (như ngày Giáng sinh, ngày 4 tháng 7 và sau 4 giờ chiều vào đêm Giáng sinh). Người dùng chỉ có thể đặt hàng trước đến lấy hàng với gia số là 15 phút (ví dụ:2 giờ chiều, 2:15 chiều, 2:30 chiều).
Người dùng không phải trả phí nhận hàng. Ví dụ này hỗ trợ các trường hợp sau:
- Người dùng có thể đặt hàng vào ngày 25 tháng 12 để được giao hàng cùng ngày.
- Người dùng có thể đặt hàng trước vào ngày 25 tháng 12 để được giao hàng vào ngày 27 tháng 12.
- Người dùng không thể đặt hàng trước vào ngày 22 tháng 12 để được giao hàng vào ngày 25 tháng 12.
- Người dùng không thể đặt trước hoặc đặt hàng sớm nhất có thể vào ngày 4 tháng 7.
{ "@type": "Service", "@id": "10824/takeout", "serviceType": "TAKEOUT", "menuId": "10824", "restaurantId": "10824" } { "@type": "OperationHours", "@id": "427/takeoutOh", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T21:00" } { "@type": "ServiceHours", "@id": "613741/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T21:00", "isSpecialHour": false, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "37/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "operationHoursId": "427/takeoutOh", "opens": "T09:00", "closes": "T16:00", "validFrom": "2017-12-24T00:00:00-07:00", "validThrough": "2017-12-24T23:59:59-07:00", "isSpecialHour": true, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "358/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "operationHoursId": "427/takeoutOh", "opens": "T00:00", "closes": "T00:00", "validFrom": "2017-12-25T00:00:00-07:00", "validThrough": "2017-12-25T23:59:59-07:00", "isSpecialHour": true, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "4356/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "operationHoursId": "427/takeoutOh", "opens": "T00:00", "closes": "T00:00", "validFrom": "2017-07-04T00:00:00-07:00", "validThrough": "2017-07-04T23:59:59-07:00", "isSpecialHour": true, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "3654/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T21:00", "isSpecialHour": false, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M" } { "@type": "ServiceHours", "@id": "54/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "opens": "T00:00", "closes": "T00:00", "validFrom": "2017-12-24T00:00:00-07:00", "validThrough": "2017-12-24T23:59:59-07:00", "isSpecialHour": true, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M" } { "@type": "ServiceHours", "@id": "5436/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "opens": "T00:00", "closes": "T00:00", "validFrom": "2017-12-25T00:00:00-07:00", "validThrough": "2017-12-25T23:59:59-07:00", "isSpecialHour": true, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M" } { "@type": "ServiceHours", "@id": "345/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "opens": "T00:00", "closes": "T00:00", "validFrom": "2017-07-04T00:00:00-07:00", "validThrough": "2017-07-04T23:59:59-07:00", "isSpecialHour": true, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 2880, "advanceBookingSlotInterval": "PT15M" }
Phí giao hàng và đến lấy hàng
Các ví dụ dưới đây trình bày cách xác định phí giao hàng và phí đến lấy hàng cho một dịch vụ.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Thiết lập phí giao hàng | Sử dụng thực thể Fee để xác định các loại phí giao hàng. |
Trường hợp sử dụng 2: Thiết lập phí dịch vụ cho dịch vụ đến lấy hàng | Hãy sử dụng thực thể Fee để xác định các loại phí dịch vụ đến lấy hàng. |
JSON
Nhà hàng hỗ trợ nhiều loại phí giao hàng.
Trong ví dụ này, bạn có thể giao hàng miễn phí trong trường hợp đơn đặt hàng tối thiểu là 30 đô la, phí giao hàng cố định là 5 đô la mà không cần đơn đặt hàng tối thiểu, và phí giao hàng là 3% trên tổng số tiền của giỏ hàng. Giờ giao hàng (bao gồm cả đơn đặt hàng và giờ phục vụ) từ 9 giờ sáng đến 11 giờ tối. Thời gian giao hàng có thời gian chờ tối thiểu là 1 giờ và thời gian chờ tối đa là 90 phút.
Người dùng có thể đặt hàng trước từ 6 ngày (8640 phút) đến 30
ngày bất kỳ. Người dùng chỉ có thể đặt hàng trước đơn hàng giao tận nơi tăng dần 15 phút (ví dụ:2 giờ chiều, 2:15 chiều, 2:30 chiều).
Khu vực đủ điều kiện để phân phối được chỉ định trong thực thể ServiceArea
.
{ "@type": "Service", "@id": "10824/delivery", "serviceType": "DELIVERY", "menuId": "10824", "restaurantId": "10824" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["-20.728777 116.804256 -20.736323 116.8161 -20.722997 116.86468 -20.725406 116.871547 -20.736323 116.873607 -20.7474 116.816444 -20.756871 116.819877 -20.757673 116.788291 -20.740497 116.786403"] } { "@type": "OperationHours", "@id": "427/deliveryOh", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00" } { "@type": "ServiceHours", "@id": "613741/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "3654/delivery", "orderType": "ADVANCE", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 8640, "advanceBookingSlotInterval": "PT15M" } { "@type": "Fee", "@id": "28427", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "AUD", "price": 0.00, "eligibleTransactionVolumeMin": 30 } { "@type": "Fee", "@id": "4326", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "AUD", "price": 5.00, "eligibleTransactionVolumeMax": 29.99 } { "@type": "Fee", "@id": "5432", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "AUD", "percentageOfCart": 3.00 }
JSON
Nhà hàng hỗ trợ nhiều loại phí dịch vụ.
Trong ví dụ này, phí dịch vụ miễn phí đối với đơn đặt hàng tối thiểu 30,00, phí dịch vụ cố định là 1 đô la nhưng không có đơn đặt hàng tối thiểu, và 2% phí dịch vụ đối với tổng số tiền giỏ hàng. Giờ đến lấy hàng (bao gồm cả đơn đặt hàng và giờ phục vụ) là từ 9 giờ sáng đến 11 giờ tối. Tính năng đến lấy hàng có thời gian chờ tối thiểu là 1 giờ và thời gian chờ tối đa là 90 phút.
Người dùng chỉ có thể đặt hàng trước với thời hạn 15 phút (ví dụ:2 giờ chiều, 2:15 chiều, 2:30 chiều).
{ "@type": "Service", "@id": "10824/takeout", "serviceType": "TAKEOUT", "menuId": "10824", "restaurantId": "10824" } { "@type": "OperationHours", "@id": "427/takeoutOh", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T23:00" } { "@type": "ServiceHours", "@id": "613741/takeout", "orderType": "ASAP", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "3654/takeout", "orderType": "ADVANCE", "serviceId": "10824/takeout", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 8640, "advanceBookingSlotInterval": "PT15M" } { "@type": "Fee", "@id": "28427", "serviceId": "10824/takeout", "feeType": "SERVICE", "priceCurrency": "AUD", "price": 0.00, "percentageOfCart": 2.00, "eligibleTransactionVolumeMin": 30 } { "@type": "Fee", "@id": "4326", "serviceId": "10824/takeout", "feeType": "SERVICE", "priceCurrency": "AUD", "price": 1.00, "percentageOfCart": 2.00, "eligibleTransactionVolumeMax": 29.99 }
Phí giao hàng động
Các ví dụ bên dưới nêu ra cách xác định phí cho một dịch vụ phân phối phụ thuộc vào nhiều yếu tố, chẳng hạn như khu vực, thời gian trong ngày và số lượng mặt hàng.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Phí giao hàng theo khu vực và khoảng cách | Hãy dùng thuộc tính eligibleRegion của Fee để chỉ định khu vực, cũng như các thuộc tính price và priceCurrency để chỉ định giá. |
Trường hợp sử dụng 2: Phí giao hàng theo thời gian | Hãy dùng thuộc tính validFrom và validThrough của Fee để chỉ định thời điểm phí giao hàng hợp lệ. |
Trường hợp sử dụng 3: Giao hàng miễn phí ở trên và số tiền đặt hàng | Hãy dùng các thuộc tính eligibleTransactionVolumeMin và eligibleTransactionVolumeMax của Fee để chỉ định giá trị giỏ hàng tối thiểu và tối đa liên kết với giá giao hàng. |
JSON
Dịch vụ mẫu sau đây tính phí giao hàng $5 trong mã ZIP 94087 và phí $2, 00 ở các khu vực khác.
{ "@type": "Fee", "@id": "4326", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 5.00, "eligibleRegion": "28427" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "postalCode": 94087, "addressCountry": "US" } { "@type": "Fee", "@id": "5432", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 2.00 }
JSON
Dịch vụ mẫu sau đây tính phí giao hàng là 20 đô la từ ngày 1 tháng 1 năm 2017 đến ngày 1 tháng 2 năm 2017 và 10 đô la bất kỳ lúc nào.
{ "@type": "Fee", "@id": "4326", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 10.00 } { "@type": "Fee", "@id": "5432", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 20.00, "validFrom": "2017-01-01T00:00:00-07:00", "validThrough": "2017-02-01T00:00:00-07:00" }
JSON
Dịch vụ sau đây sẽ tính phí giao hàng là 10 đô la đối với những đơn đặt hàng tối đa 100 đô la và không tính phí giao hàng.
{ "@type": "Fee", "@id": "4326", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 10.00, "eligibleTransactionVolumeMax": 99.99 } { "@type": "Fee", "@id": "5432", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "USD", "price": 0.00, "eligibleTransactionVolumeMin": 100 }
Khu vực kinh doanh dịch vụ giao hàng
Ví dụ bên dưới nêu ra cách xác định các khu vực kinh doanh có sẵn của dịch vụ phân phối.
Trường hợp sử dụng | Phương pháp hay nhất |
---|---|
Trường hợp sử dụng 1: Định nghĩa khu vực kinh doanh |
Sử dụng |
Trường hợp sử dụng 2: Bạn có khu vực kinh doanh Đa giác. | |
Trường hợp sử dụng 3: Bạn có một khu vực kinh doanh, nhưng không có khu vực nhỏ hơn trong đó. | |
Trường hợp sử dụng 4: Bạn có nhiều khu vực kinh doanh. | Tạo nhiều thực thể ServiceArea để đại diện cho khu vực kinh doanh của bạn. |
JSON
Nhà hàng hỗ trợ các dịch vụ giao hàng đến nhiều khu vực kinh doanh. Bạn có thể xác định các khu vực kinh doanh bằng hình dạng đa giác, mã ZIP hoặc hình tròn.
{ "@type": "Service", "@id": "10824/delivery", "serviceType": "DELIVERY", "menuId": "10824", "restaurantId": "10824" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["-20.728777 116.804256 -20.736323 116.8161 -20.722997 116.86468 -20.725406 116.871547 -20.736323 116.873607 -20.7474 116.816444 -20.756871 116.819877 -20.757673 116.788291 -20.740497 116.786403"] } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "postalCode": 6714, "addressCountry": "AU" } { "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "geoMidpointLatitude": -20.733575, "geoMidpointLongitude": 116.844931, "geoRadius": 1000 } { "@type": "OperationHours", "@id": "427/deliveryOh", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00" } { "@type": "ServiceHours", "@id": "613741/delivery", "orderType": "ASAP", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "leadTimeMin": 60, "leadTimeMax": 90 } { "@type": "ServiceHours", "@id": "3654/delivery", "orderType": "ADVANCE", "serviceId": "10824/delivery", "opens": "T09:00", "closes": "T23:00", "isSpecialHour": false, "advanceBookingRequirementMin": 30, "advanceBookingRequirementMax": 8640, "advanceBookingSlotInterval": "PT15M" } { "@type": "Fee", "@id": "4326", "serviceId": "10824/delivery", "feeType": "DELIVERY", "priceCurrency": "AUD", "price": 5.00 }
JSON
{ "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["37.806000 -122.425592 37.775849 -122.419043 37.795547 -122.394046 37.808747 -122.412619"] }
JSON
Chuyển một danh sách chứa các chuỗi đại diện cho vòng lặp đa giác. Bao gồm các khu vực bị loại trừ trong thuộc tính polygon
của ServiceArea
.
Tính năng Đặt món ăn diễn giải những khu vực trùng lặp là những khu vực bị loại trừ.
{ "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["37.771535 -122.506881 37.764289 -122.506669 37.766497 -122.453058", "37.791707 -122.447987 37.746676 -122.449433 37.736150 -122.505944 37.780924 -122.509729"] }
JSON
{ "@type": "ServiceArea", "@id": "28427", "serviceId": "10824/delivery", "polygon": ["37.785847 -122.484851 37.772757 -122.483983 37.774442 -122.458563 37.786876 -122.459474"] } { "@type": "ServiceArea", "@id": "4356", "serviceId": "10824/delivery", "polygon": ["37.774804 -122.454774 37.766224 -122.452881 37.769087 -122.436043 37.773087 -122.437417"] }
Xoá và vô hiệu hoá các thực thể
Bạn có thể xóa các thực thể khỏi dịch vụ mà bạn không muốn Google hiển thị cho người dùng nữa. Quy trình này sẽ hữu ích nếu bạn cần thông báo cho Google rằng một nhà hàng hoặc dịch vụ đã đóng cửa vĩnh viễn hoặc tạm thời.
Xoá thực thể
Để xóa một thực thể, hãy xóa thực thể đó khỏi nguồn cấp dữ liệu của bạn. SLA này là 2 giờ. Để giới thiệu lại một thực thể, hãy thêm lại thực thể đó trong nguồn cấp dữ liệu.
Tạm thời xóa các thực thể dịch vụ
Bạn cũng có thể tạm thời vô hiệu hoá thực thể Service
trong một khoảng thời gian cụ thể hoặc không xác định.
Bạn có thể tắt tính năng đặt hàng trước cho một khoảng thời gian cụ thể nếu muốn cho phép người dùng đặt hàng trước nhưng tắt đơn đặt hàng ngay trong một khoảng thời gian nhất định (chẳng hạn như trong ngày lễ).
Việc vô hiệu hoá thực thể Service
trong một khoảng thời gian không xác định sẽ hữu ích nếu bạn muốn vô hiệu hoá người dùng để đặt cả hai đơn đặt hàng trước và ngay lập tức cho đến một số ngày không xác định trong tương lai.
Việc tạm thời vô hiệu hoá một dịch vụ bao gồm việc cập nhật trực tiếp các tệp nguồn cấp dữ liệu như cách bạn xoá bằng một lệnh xoá vĩnh viễn.
Sử dụng các kỹ thuật bên dưới để tắt hoặc ghi đè giờ cho Service
trong một khoảng thời gian xác định trước.
Để tạm ngưng một thực thể
Service
trong một khoảng thời gian cụ thể đã biết trước (ví dụ: giờ hoạt động vào ngày lễ), hãy sử dụng các thực thểOperationHours
vàServiceHours
.Tạo một thực thể ServiceHours mới có thuộc tính
isSpecialHour
thànhtrue
. Bắt buộc phải có các thuộc tínhvalidFrom
vàvalidThrough
để chỉ định các giá trị thời gian khi giờ đặc biệt hợp lệ. Đặtopens
vàcloses
lần thành "00:00". Dịch vụ sẽ tự động tiếp tục sau giờ hoạt động của thực thểServiceHours
giờ thông thường một lần bên ngoài các giá trịvalidFrom
vàvalidThrough
của thực thể giờ đặc biệt.{ "@type":"ServiceHours", "@id":"delivery_1_service_hours_holiday", "orderType":"ASAP", "serviceId":"delivery_1", "operationHoursId":"delivery_1_op_hours", "opens":"00:00", "closes":"00:00", "validFrom":"2022-12-25T00:00:00-05:00", "validThrough":"2022-12-26T00:00:00-05:00", "leadTimeMin":"20", "leadTimeMax":"20", "isSpecialHour":true }
Để tạm thời xoá một thực thể
Service
trong một khoảng thời gian không xác định, hãy đặt thuộc tínhisDisabled
của thực thể đó thành "true". Để bật lại, hãy xóa thuộc tính khỏi thực thể của bạn hoặc đặt giá trị thành "false".Xin lưu ý rằng bạn chỉ nên sử dụng thuộc tính
isDisabled
khi không biết thời điểm thành lập lại dịch vụ. Ví dụ: hãy sử dụng thuộc tính này cho các sự kiện không mong muốn và không sử dụng cho các sự kiện).