No. But it won't take all that much custom development to achieve.
A full detailed answer would be blog post sized; so am just posting the general principle here for inspiration.
Your problem is; the Rules Engine operates on an if-else-then basis, and it does so by-component. You have no control over component relationships. Reasons for this are many; but looking at the underlying XML structure in the __Renderings
field will pretty much tell the tale.
What you can do however, is create a simple "Item Renderer" component of your own. Its datasoure would be little more than a simple Treelist or Multilist control. In that - you will select your datasource items to be rendered and - given you do have control over this in both Treelist
and Multilist
- you can control their individual ordering as well.
The Item Renderer would then loop through items, in the order listed, and render the item. How? Well there are several ways - but the __Renderers
field is an obvious candidate. I've also used the __Controller
and __Action
fields on items to achieve this, but this limits your rendering choices to purely Controller Renderings.
With this in place; all you need to do is create multiple variations of the "Item Renderer" datasource Multilist and use those in your Rules Engine based personalisation.
Not an ideal solution and plenty of room for improvement; but hopefully gets you thinking a little bit outside the box and help you along :-)