Эти меню могут быть иерархическими не более 3-х уровней.
OK
Вы разрешаете пользователям делать это?
Обычно нет, но я вижу случаи, когда это может быть полезно.
Как вы храните иерархию?
В таблице в базе данных, по идентификатору пользователя. Вам также понадобится столбец в таблице для реализации иерархии и другая таблица, содержащая параметры меню и базовые URL.
Как вы программно отображаете меню?
Это сложно. Вы должны найти способ выдвинуть иерархию меню на страницу из контроллера. JSON кажется вероятным кандидатом. Что-то из jQuery UI должно быть в состоянии подобрать этот JSON и отобразить меню для вас.
Как сделать так, чтобы пользователям было легко создавать иерархии - что-то вроде jQuery drag / drop?
Пользовательский интерфейс jQuery имеет функцию перетаскивания.
Удачи!