I want to allow the user to create a layout when they publish a new item. They should be able to choose one or more of a set list of templates, each containing a text area and then one or more images (something like this).

Is there an add-on out there that could do this kind of thing? I've seen Content Elements but it doesn't (as far as I can see) allow custom sections to be created. I'm thinking the best way to go might be Matrix, but am open to other suggestions!



5 Answers 5


Even Matrix won't neccessarily help you here as you'll still need to predefine the fieldtypes within Matrix.

What you could possibly do (and I've done this on a build previously) is give the user radio button options for specific fields and set them on/off as per their instructions and then run conditionals on the front-end to display/hide as required.

I'd be wary of giving any client too much control though, particularly over layout, has a tendency to start looking garish.


You've just described Blueprints http://devot-ee.com/add-ons/blueprints :)

  • I did look at Blueprints, but I need the ability to add multiple sections per post, it looks to me that with Blueprints you just have the one template per post. Jan 22, 2013 at 18:44
  • Ah yes, that's correct. But what would you do with multiple templates for the same post? Jan 23, 2013 at 19:36

This will only help if this is a channel you wish to control via the Pages module, but Better Pages does exactly that - it provides a UI for selecting a layout, and also showing/hiding fields based on this selection.

  • The problem here is that I need to have multiple sections in each post. So one post would be comprised of one or more sections like this. Jan 22, 2013 at 18:49

You could create all the different fields you need for each layout and then use the entry type addon to control which ones are shown to the user based on their choice. Then you could use switchee, in your template, with the value of the chosen layout as the variable to control what code is used.

{exp:switchee variable = "{your_entry_type_field}" parse="inward"}

    {case value="layout1"}
        Template 1 code goes here

    {case value="layout2"}
        Template 2 code goes here

    {case value="layout3"}
        Template 3 code goes here


This will do what you want but out of the box you won't be able to show an image of the layout. If that is crucial you are better off going down the path Derek suggests using either Better pages or Plates add-ons.


To add to Stevens answer,

You could make a radio button with, say, three design options. The fields will then be displayed in the template as chosen. {if field=="design 1"}...{/if} This gives them a bit of freedom, but not so much as to let them shovel divs around to their liking.

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.