Writing and organizing your menu in VeloCMS
How to structure menu posts by category, add prices and descriptions, and display them on your /menu route using the Restaurant theme.
VeloCMS handles restaurant menus through a dedicated Menu Items system accessible from Admin > Menu. Each item has a name, description, price, dietary tags, and an optional photo. Items are grouped by category (Starters, Mains, Desserts, Drinks) and displayed on your public /menu route — no blog posts needed for the menu itself.
Step 1 — Navigate to the Menu admin
Go to Admin > Menu. If this is your first visit, the list is empty. Click Add Item to create your first menu entry. You will see a form with Name, Description, Price, Category, Available toggle, and an image upload slot.
Step 2 — Add menu items
Fill in the item fields. Name is required — keep it to 60 characters maximum to display cleanly on small screens. Description is optional but recommended: 1–2 sentences describing preparation method, key ingredients, and flavour profile. Price accepts a decimal number (e.g. 14.50). The Category dropdown lets you assign the item to Starters, Mains, Desserts, Drinks, or a custom category you define.
- Name: required, 60 char max
- Description: optional, 200 char max, plain text only
- Price: decimal, e.g. 14.50 — leave blank to mark as 'Market Price'
- Category: required — items are grouped by category on the /menu page
- Available: toggle off to hide the item from the public menu without deleting it
- Image: optional JPEG/PNG, minimum 400×300px, displays as a card thumbnail
Step 3 — Set sort order
Items within a category are sorted by the Sort Order field (ascending). Click and drag item rows to reorder them — the order saves automatically. Put your signature dishes first within each category: they receive the most attention from customers scanning top-to-bottom.
Step 4 — View the public menu
Your menu is live at https://yourblog.velocms.org/menu. It renders as a grouped list with category headings (h2), item cards showing name, description, and price, and optional item photos. The page uses ISR and updates within 60 seconds of any admin change. The Restaurant theme nav includes a Menu link pointing to /menu by default.
The /menu page emits Restaurant + Menu + MenuItem schema.org JSON-LD, making your menu eligible for Google's restaurant rich result, which can display menu items directly in search results.
Step 5 — Adding allergen and dietary information
Use the Description field to include allergen information inline — e.g. 'Contains gluten, dairy. Suitable for vegetarians.' This keeps the information visible on the menu page and in the JSON-LD structured data. If your menu has many allergen-sensitive items, consider adding a separate Allergens information page linked from the menu footer.
Using blog posts alongside the menu
Menu Items handle the structured menu data. Blog posts under the Restaurant theme are ideal for seasonal dishes, chef's specials, ingredient stories, and behind-the-scenes content. A post about a new seasonal tasting menu creates an SEO opportunity that a static menu item cannot — it can include photos, a narrative, and links back to the /menu page.
Updating and removing items
To temporarily remove a dish — for example, a seasonal special that is no longer available — toggle the Available switch to off rather than deleting the item. The item disappears from the public /menu page immediately but can be re-enabled with one click when the dish returns. Deleted items cannot be recovered. For price changes, edit the Price field directly and click Save — the /menu page reflects the updated price within 60 seconds.