Очень часто сайты на 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}
Поздравляю, теперь Вы избавили себя от большого геморроя лишней траты времени! В следующих статьях расскажу о настройке стилей меню и о том как делать выпадающее горизонтальное меню. Удачи!
Leave a Reply