Автогенерация меню для DLE

Очень часто сайты на DLE создаются с кучей категорий, их просто дохрена. Мало того что их нужно сначала создать, что в ДЛЕ не очень быстро делается, так еще и ручками прописать в main.tpl или где у вас там меню находится… Ах да и каждый раз после изменений приходится лазить еще и в шаблон… Мы же в 21 Веке живём…

Эта функция сама генерирует всю структуру категорий учитывая вложенность.

Код вставлять в /engine/modules/functions.php

[sourcecode language=»php»]
function CategoryMenu($categoryid = 0, $parentid = 0, $returnstring = ») {
global $cat_info, $user_group, $member_id;
$allow_list = explode( ‘,’, $user_group[$member_id[‘user_group’]][‘cat_allow_addnews’] );
$root_category = array ();
if( count( $cat_info ) ) {
foreach ( $cat_info as $cats ) {
if( $cats[‘parentid’] == $parentid ) $root_category[] = $cats[‘id’];
}
if( count( $root_category ) ) {
foreach ( $root_category as $id ) {
if( $allow_list[0] == "all" or in_array( $id, $allow_list ) ) {

if ($cat_info[$id][‘icon’] != ») $icon_src = $cat_info[$id][‘icon’];
else $icon_src = "/templates/Default/dleimages/no_image.jpg";

$returnstring .= "<div class=’custom-3′><div class=’over160′><a href=’/".$cat_info[$id][‘alt_name’]."/’><img alt=’" . $cat_info[$id][‘name’] . "’ src=’".$icon_src."’></a></div><h2 class=’c4title’><a title=’".$cat_info[$id][‘name’]."’ href=’/".$cat_info[$id][‘alt_name’]."/’>".$cat_info[$id][‘name’]."</a></h2></div>";
}
$returnstring = CategoryMenu( $categoryid, $id, $returnstring );
}
}
}
return $returnstring;
}
[/sourcecode]

Далее необходимо в файл /engine/init.php, в самый конец добавить код:
[sourcecode language=»php»]
$tpl->set ( ‘{menu}’, CategoryMenu(0, $category_id));
[/sourcecode]

Всё, теперь для вывода меню достаточно вставить в шаблон [code]{menu}[/code]

Поздравляю, теперь Вы избавили себя от большого геморроя лишней траты времени! В следующих статьях расскажу о настройке стилей меню и о том как делать выпадающее горизонтальное меню. Удачи!