У нас недавно была эта проблема на работе, и я закончил тем, что подбирал помощника, который брал бы запрос из таблицы содержимого и преобразовывал его в меню. Поскольку это должно было стать более гибким, код становился все хуже и хуже до того момента, когда я сейчас переписываю его.
Не задерживайте дыхание, так как я буду тратить свое время на то, чтобы заставить его работать правильно, поскольку он должен быть очень гибким, но его использование не может сбить с толку.