Прелюдия: после 4 с половиной лет системного администрирования подсел на WEB: html, css, python+Django.
А теперь суть вопроса:
необходимо сделать несложный сайт, и тут же столкнулся с дилемой по части организации вывода главного меню.
Вариант первый: создать модель(имя_пункта_меню, slug(атозаполнение транслитерированным именем_пункта)), пункты меню добавлять уже через админку, создать контекстный процессор для вывода меню в шаблоне циклом.
Плюсом вижу - универсальность, т.е. создать отдельное приложение под это дело (либо использовать готовое решение вроде django-menu). Минусом вижу: “дублирование” названий, например - пункт меню называется “Новости”, категория статей, логично предположить тоже - “Новости”…
Вариант второй (который более нравится лично мне): главное меню “зашить” внутрь шаблона. Обоснование: главное меню продумывается один раз на стадии проектирования и, в дальнейшем, практически не подлежит реорганизации(ибо добавление, удаление пунктов может нарушить изначальную концепцию дизайна, а ещё хуже - поплывёт вёрстка). Нет необходимости использовать сторонние модули для транслитерации slug. Нет необходимости добавлять в модель промежуточные “настроечные” поля для привязки статей, категорий, галерей к пунктам меню.
Делать “комбайн” на подобии Joomla под один конкретный сайт смысла не вижу - опять же, облегчает работу контент менеджерам, которых не будут пугать множество “настроечных” полей. Универсальность вещь конечно хорошая, но, так же как и с “красотой” кода - перебарщивать не надо.
Надеюсь не сильно запутано изложил. Прошу гуру наставить на путь истинный - как всё таки принято делать? Должны же быть какие нибудь “проверенные временем” подходы к построению сайтов, а то на просторах интернета встречаю только примеры реализаций какой либо технической стороны вопроса (как выводить меню через цикл, создание контекстных процессоров и т.д.)