Разработка модуля меню для DLE
Модуль меню:
статьи на сайте находятся каждая в своей категории, мультикатегорий для статей нет; вся информация о категориях хранится в массиве в какой-то переменной в самом движке, т.е. даже запросов в базу делать не нужно (насколько я понимаю).
Необходим модуль меню (достаточно реализации в виде простой вставки кода файла в шаблон в виде include=...), который должен выводить дерево категорий и раскрывать ветки категорий в зависимости от просматриваемой категории или статьи.
Предположим, есть следующая структура категорий:
- кат1
- кат2
--- кат21
--- кат22
------ кат221
------ кат222
--- кат23
- кат3
--- кат31
--- кат32
- кат4
В данной структуре у категории кат2 есть дочерние категории кат21, кат22, кат23, у категории кат3 есть дочерние категории кат31, кат32, у категории кат22 есть дочерние категории кат221, кат222.
Нужно, чтобы модуль на главной странице сайта (когда id просматриваемой категории не задано) выводил бы только категории первого уровня:
- кат1
- кат2
- кат3
- кат4
При клике на категорию кат2 должны открываться статьи этой категории (при этом в движке передается id просматриваемой категории, предположим id=2), а меню должно показывать также и дочерние категории текущей открытой категории, т.е. вот так:
- кат1
- кат2
--- кат21
--- кат22
--- кат23
- кат3
- кат4
при этом категории кат221 и кат222 в меню не отображаются, т.к. не являются прямыми дочерними категориями для кат2.
если пользователь кликает на категорию кат3, то дерево категорий становится таким:
- кат1
- кат2
- кат3
--- кат31
--- кат32
- кат4
если пользователь кликает, предположим, на кат22, то, соответственно, раскрывается ветка категории кат22 (при этом ветка кат3 не раскрывается).
то есть суть модуля следующая - получить id категории, для неё раскрыть все прямые дочерние категории; дерево категорий при этом также должно быть раскрыто до категории, которая просматривается, например, пользователь сразу ввел в адресную строку путь: site/category=кат31 , значит у дерева категорий должна быть раскрыта ветка кат3, т.к. она является родительской для кат31.
если пользователь вводит в адресную строку, например, site/category=кат22, то у дерева должна быть раскрыта ветка кат2, т.к. она является родительской для кат22, и сама ветка кат22 также должна быть раскрыта, т.к. у неё есть дочерние категории кат221 и кат222.
Аналогичным образом нужно сделать отображение меню для статей - когда открывается статья, нужно определить id категории, в которой находится эта статья и вывести дерево категорий таким образом, чтобы все прямые родительские категории для текущей были открыты, а также чтобы была раскрыта ветка этой самой категории, если у неё есть дочерние категории.
Меню должно быть оформлено в виде списка ul-li, на указанном выше примере это вот так:
- - кат1
- - кат2
- --- кат21
- --- кат22
- ------ кат221
- ------ кат222
- --- кат23
- - кат3
- --- кат31
- --- кат32
- - кат4
т.е. если у категории есть дочерние элементы, то внутри этой категории создается новый список ul-li.
Каждое название категории должно быть в виде ссылки на категорию.