I'm building a website for a restaurant and I wanted to make the back-end as easy to use as possible. So I thought of a system like this.

  • Allergens - Contains name and icon
  • Ingredients - Contains allergens
  • Recipes - Contains ingredients and text about the dish
  • Menu - Contains recipes

So the concept is that they can just add as many recipes as they want. And just drag and drop/select the ingredients. And never ever worry about which allergens is present.

Thing is, I'm not sure what's the best way of achieving this. Would allergens, ingredients and recipes need to be separate entries in separate channels? Since I want to be able to attach an icon to an allergen, I guess that needs to be a channel?

1 Answer 1


Here's how I'd do it...

  1. Create a channel called Allergens with a custom field for the icon. If the icon is an image, make it an assets field.

  2. Create a channel called Ingredients with a custom field for the allergens. It will be of the Entries field-type and only allow the user to select Allergens entries.

  3. Create a channel called Recipes with a custom field for the Ingredients and another custom field for the description of the dish. The Ingredients field will be of the Entries field-type and only allow the user to select Ingredients entries. The description field would probably be a simple Rich Text field.

  4. Create a channel called Menu. If there is only one menu needed, I'd probably make it a Single. If more are needed, make it a standard channel. It'll need a custom field for the Recipes, which would be an Entries field where the user can only select Recipe entries.

There are other ways of doing it, but this would probably give you the most flexibility in the long run, and keep things simple for the users.

  • I see, that's actually what I thought I'd have to do. Basically channels with entries referring to each other. Feb 20, 2017 at 10:16
  • Yep. Sounds like you were already there. Feb 20, 2017 at 10:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.