Речь сегодня пойдёт о менюшках ^_^ Самый распространённый способ - жёсткий-деревянный - это просто созать таблицу "каталог", где организуется "дерево сайта" и конкретные материалы указывают на узлы этого дерева. Но мне такой способ не нравиццо, ибо получается жёсткая структура. А материалы нередко находятся на пересечении различных "категорий". Вариант посложнее - жёсткий-многосвязный - то же самое, но в ещё одной таблице хранятся связи между каталогом и материалами. Получается, что один материал может принадлежать сразу нескольким узлам каталога. Но и этот способ меня не устраивает, ибо приходится постоянно следить за каталогом: разделять большие разделы на подразделы, объединять маленькие подразделы в один. Чуть удобнее - жёсткий-тэгированный - для материала задаётся набор тэгов с соответствующим пространством имён. Для генерации меню выбираются все теги нужного уровня из этого пространства имён. Не избавляет от указанных выше проблем. Автоматический, но совершенно невменяемый - облако тэгов - выбираются самые употребительные тэги и предлагается фильтрация по ним. Не решает проблему навигации ибо часть материалов может оказаться недоступной, а другая часть будет доступна аж из всех пунктов. Автоматический, но просто невменяемый - выборка тэгов - выбирается n<10 тэгов каждый из которых охватывает не более ~1/n материала. Описанная выше проблема не столь фатальна, хотя и не устранена полностью. Больше я ничего не придумал. Все описнные способы весьма далеки от идеала... Опишу идеал поподробнее.. 1. меню должно генериться автоматом на основе тэгов, формируя многоуровневое дерево 2. количество пунктов должно быть примерно 3-7 3. пункты должны делать весь матриал на примерно равные части 4. должно быть как можно меньше материалов, которые попадают более чем в один пункт У кого-нибудь есть мысли на этот счёт?
зачем? вообще - надо смотреть твою область это обязательно при создании материала. еще есть таблица связей "с этим материалом связаны такие материалы" и попробуй глянуть http://www.thebrain.com/#-47 для визуализации.
> зачем? затем, чтобы посетителю было удобно пользоваться сайтом. для этого у него должна быть удобная навигация, с одной стороны не вываливающая список материалов на десять страниц, и с другой - не требующая пользователя выбирать один из двадцати пунктов меню. > вообще - надо смотреть твою область область произвольная. например - информационный сайт со статьями на различные темы. количество материалов, допустим, порядка тысячи. >> должно быть как можно меньше материалов, которые попадают более чем в один пункт > это обязательно при создании материала. хотелось бы назначать материалу тэги, которые бы максимально точно отражали его суть, а не положение в каталоге. > еще есть таблица связей "с этим материалом связаны такие материалы" а также очень лениво эту таблицу заполнять... > и попробуй глянуть http://www.thebrain.com/#-47 для визуализации. ужос. неудобно. неопрятно. некроссбраузерно.
это и есть поиск не всегда юзер ищет что-то конкретное. иногда его просто интересует опеределённая тематика. для этого и существует меню - чтобы несколько конкретизировать интересы пользователя.