Форум сайта python.su
Прелюдия: после 4 с половиной лет системного администрирования подсел на WEB: html, css, python+Django.
А теперь суть вопроса:
необходимо сделать несложный сайт, и тут же столкнулся с дилемой по части организации вывода главного меню.
Вариант первый: создать модель(имя_пункта_меню, slug(атозаполнение транслитерированным именем_пункта)), пункты меню добавлять уже через админку, создать контекстный процессор для вывода меню в шаблоне циклом.
Плюсом вижу - универсальность, т.е. создать отдельное приложение под это дело (либо использовать готовое решение вроде django-menu). Минусом вижу: “дублирование” названий, например - пункт меню называется “Новости”, категория статей, логично предположить тоже - “Новости”…
Вариант второй (который более нравится лично мне): главное меню “зашить” внутрь шаблона. Обоснование: главное меню продумывается один раз на стадии проектирования и, в дальнейшем, практически не подлежит реорганизации(ибо добавление, удаление пунктов может нарушить изначальную концепцию дизайна, а ещё хуже - поплывёт вёрстка). Нет необходимости использовать сторонние модули для транслитерации slug. Нет необходимости добавлять в модель промежуточные “настроечные” поля для привязки статей, категорий, галерей к пунктам меню.
Делать “комбайн” на подобии Joomla под один конкретный сайт смысла не вижу - опять же, облегчает работу контент менеджерам, которых не будут пугать множество “настроечных” полей. Универсальность вещь конечно хорошая, но, так же как и с “красотой” кода - перебарщивать не надо.
Надеюсь не сильно запутано изложил. Прошу гуру наставить на путь истинный - как всё таки принято делать? Должны же быть какие нибудь “проверенные временем” подходы к построению сайтов, а то на просторах интернета встречаю только примеры реализаций какой либо технической стороны вопроса (как выводить меню через цикл, создание контекстных процессоров и т.д.)
Отредактировано Александр Кошелев (Авг. 3, 2013 20:51:11)
Офлайн
od-5
а чем плохо сделать шаблонный тег ?
Офлайн
Да подразобрался уже вроде.
В общих чертах:
- меню представляет собой класс для хранения категорий(название, автоматически заполняющийся транслитерированный slug, родитель, уровень вложенности);
- есть класс, хранящий инфу о “компании\владельце” (телефон, адрес, e-mail, время работы, пункт меню(отношение один к одному на категорию));
- есть класс хранящий материалы (заголовок, дата публикации, текст(поле tinymce), пункт меню(отношение многие к одному на категорию));
- класс для хранения галереи изображений, картинки для слайдера на главной (изображение, описание, пункт меню(отношение многие к одному на категорию)).
Правильно мыслю?
Отредактировано od-5 (Авг. 4, 2013 03:21:09)
Офлайн