Разработка модуля меню для DLE

Максим17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
22.08.2013

Модуль меню:

статьи на сайте находятся каждая в своей категории, мультикатегорий для статей нет; вся информация о категориях хранится в массиве в какой-то переменной в самом движке, т.е. даже запросов в базу делать не нужно (насколько я понимаю).

Необходим модуль меню (достаточно реализации в виде простой вставки кода файла в шаблон в виде 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.

Каждое название категории должно быть в виде ссылки на категорию.

Заявки фрилансеров