1. Я бы взял свой лисапед
includeHTML, предварительно создав разные типы блоков в формате HTML и их настраиваемые свойства в базе данных.
2. Затем загружал бы на front и после внесения изменений пользователем, полностью выгружал бы DOM-структуру в шаблон и/или сохранял бы в базе: id шаблона, всю иерархию блоков и настройки каждого блока.