Haikson

[ Everything is possible. Everything takes time. ]

Древовидная навигация по сайту

Долго я искал способ построения древовидной навигации для сайта. Я не спорю, возможно этот велосипед уже не раз изобретался. Но дерево без ограничения в уровнях - действительно являлось проблеммой для меня. Ранее я делал нечто подобное на SQL. Это была хранимая процедура на сервере MySQL, при вызове которой мы получали HTML код навигации. Но в коде были свои недостатки, которые я от проекта к проекту решал путем прямого вмешательства. В этом же коде, написанном на php очень легко реализовано дерево объектов. В таблице данные я храню в виде:
  • id int auto_increment,
  • parent int,
  • title varchar
Первым делом я загоняю в массив id активного объекта и всех родительских уровней. Делаю это функцией array_unshift($id, $parents_array) для того, чтобы нулевой уровень (родитель объектов первого уровня всегда равен нулю, т.к. у объектов первого уровня нет родителя) был внесен в $parents_array[0], а $id активного элемента был последним в списке ($id активного элемента я вношу в данный массив, потому, что у данного объекта тоже могут оказаться элементы-потомки, которые тоже необходимо выводить).