Древовидное ul-li меню категорий [lightweight]

Тема в разделе "Shop-script", создана пользователем mariohs, 16 май 2009.

Статус темы:
Закрыта.
Модераторы: kadurinho
  1. mariohs

    mariohs Постоялец

    Регистр.:
    1 май 2008
    Сообщения:
    115
    Симпатии:
    94
    Держите древовидное меню категорий для shopscript. Для построения всего меню используется только один запрос к базе данных. Магазин грузится заметно быстрее, особенно если на сайте много категорий товаров. Текущая позиция меню запоминается при помощи cookies.

    Из недостатков - не раскрывается подменю при клике на ссылку, а раскрывается только при клике на "плюсик".

    Файл /includes/category_tree.php заменяем на
    Код:
    <?php
    $menu_array = array();
    
    $query = db_query("select categoryID, name, parent from ".CATEGORIES_TABLE." where categoryID>1 order by sort_order, name ") or die(db_error());
    while($row = db_fetch_row($query))
    {
    	$menu_array[$row['categoryID']] = array('name' => $row['name'],'parent' => $row['parent'],'categoryID' => $row['categoryID']);
    }
    
    function generate_menu($parent, &$menu_text)
    {
            $has_childs = false;
            global $menu_array;
    	global $categoryID;
            foreach($menu_array as $key => $value)
            {
                    if ($value['parent'] == $parent) 
                    {       
                            if ($has_childs === false)
                            {
                                    $has_childs = true;
                                    $menu_text .= '<ul>';
                            }
    			$current = ($categoryID == $value['categoryID'])?"class='black'":"";
                            $menu_text .= '<li><a href="index.php?categoryID='.$value['categoryID'].'" '.$current.'>'.$value['name'].'</a>';
                            generate_menu($key, $menu_text);
                            $menu_text .= '</li>';
                    }
            }
            if ($has_childs === true) $menu_text .= '</ul>';
    }
    
    $menu = "";
    generate_menu(1, $menu);
    $smarty->assign( "menu_tree", $menu );
    ?>
    Файл templates/frontend/tmpl0/category_tree.htpl.html заменяем на
    Код:
    <div id="categories">{$menu_tree}</div>
    <script>{literal}menu_initiate();{/literal}</script>
    В templates/frontend/tmpl0/head.tpl.html добавляем строчки
    Код:
    <link rel="stylesheet" href="menu.css" type="text/css" />
    <script type="text/javascript" src="menu.js"></script>
    Остальные файлы находятся в архиве: Посмотреть вложение menu_ss.rar
     
    VenomHOLD нравится это.
  2. VenomHOLD

    VenomHOLD

    Регистр.:
    14 мар 2009
    Сообщения:
    272
    Симпатии:
    53
    подскажите что в menu.css подкрутить чтоб в опере и фоксе отображалось одинаково. в опере всё красиво а в фоксе пролеты между строками огромные. немогу некак этот "<div>" настроить:(
     
  3. vitsag

    vitsag Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    88
    Симпатии:
    5
    уважаемый mariohs, не могли бы ссылочку кинуть как это у Вас выглядит на сайте...?
    у меня растягивается на офигенную длинну - 3-4 экрана...
     
Статус темы:
Закрыта.