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

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

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

Код вставлять в /engine/modules/functions.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;
}

Далее необходимо в файл /engine/init.php, в самый конец добавить код:

$tpl->set ( '{menu}', CategoryMenu(0, $category_id));

Всё, теперь для вывода меню достаточно вставить в шаблон

{menu}

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


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *