Список товаров в категории ShopOS

Немного теории:
        http://www.getinfo.ru/article610.html - крутая статья!
http://phpclub.ru/detail/article/db_tree
http://phpclub.ru/detail/article/db_tree
По топику понятно, что он посвящён именно двигу ShopOS. Классный, в бесплатной сборке он идет без почты (функция умело удалена), но имея гугл и сноровку можно допилить его, что бы он заработал как полнофункциональный магазинчик. Дальше о категориях.
Для начало нужно было получить вот такое меню:

Что бы при нажатии на главную категорию выпадал список товаров. Не долго мучаясь отписал на официальном форуме . Увы ответов не получил, готовых решений нет. Понял, что придётся самому.
С ЧПУ (вставить в index.html вашего шаблона):
На выходе:
Оказалось что необходимость в данном меню отпадает, но появляется новая!

Класс! Теперь есть еще уровень вложенности.
С ЧПУ (вставить в index.html вашего шаблона):
 На выходе:
Мне ЧПУ не надо - БЕЗ ЧПУ (вставить в index.html вашего шаблона):
"; 
 } else { echo "";}
}
{/php} 
 На выходе:
Получили что хотели, на не совсем так. Теперь я не могу попасть в раздел КАТЕГОРИИ, он то не кликабельный (я использую ява меню при клике на категорию выпадает вложенный UL), а это существенно и в ТЗ прописано.
Поэтому этот вариант мне не подходит, совсем. Будем работать с {$box_CATEGORIES}.
Идем в наш_сайт\themes\наш_шаблон\source\inc\show_category.inc.php. Проверяем что бы параметр $MaxLevel равен был 1, это значит, что по умолчанию будет показываться 1 уровень вложенности.
В том же файлике находим:
if ($old_level > $level) {и после вставляем:
                        if ( isset($GLOBALS['cPath']) ) { 
                            if ( !strpos($GLOBALS['cPath'], "_")===false ) {
                            $path = explode('_',$GLOBALS['cPath']);
                                $query = "SELECT * FROM 
                                    vip_products p, 
                                    vip_products_description pd, 
                                    vip_products_to_categories p2c, 
                                    vip_categories c 
                                WHERE 
                                    c.categories_status='1' 
                                    and p.products_status = '1' 
                                    and p.products_id = p2c.products_id 
                                    and p.products_id=pd.products_id 
                                    and p2c.categories_id = '".$path[1]."' 
                                    and c.parent_id = '".$path[0]."' 
                                ORDER by p.products_date_added";
                                $query = osDBquery($query);
                                $categories_string .= "";
                                while ($row1 = os_db_fetch_array($query)) { 
                                    $categories_string .= "- ".$row1['products_name']."";
                                }      
                                $categories_string .= "
";
                            }
                        }Итого: если есть параметр cPath (он показывает категорию текущую), то смотрим вложенная она, если да, то разбиваем и получаем айди категории и подкатегории. А дальше запрос - рисуем список.

Теперь, когда вы нажимаете на подкатегорию выпадает еще и список товаров. Оптимизируйте и ковыряйте -) Да и не забудьте в коде поменять префикс БД на свой.
UPD 02.09.11. для еще одного уровня + оптимизирован код.
вставить в оригинальный файл show_category.inc.php после ( $foo[$cid]['name'].$ProductsCount. ''; - 114 строчка)
                        if ($level == 3) {
                            if ( !empty($Aktiv)) {
                                //$categories_string .= $cid;
                                $query = "SELECT * FROM 
                                    vip_products_to_categories p2c,
                                    vip_products p,
                                    vip_products_description pd
                                WHERE 
                                    p2c.categories_id = '".$cid."'
                                    and p.products_status = '1' 
                                    and p.products_id = p2c.products_id 
                                    and p.products_id=pd.products_id
                                ORDER by p.products_date_added";
                                $query = osDBquery($query);
                                $categories_string .= "";
                                while ($row1 = os_db_fetch_array($query)) { 
                                    $categories_string .= "[url=/product_info.php?products_id={$row1[]".$row1['products_name']."[/url]";
                                }      
                                $categories_string .= "
";
                            }
                        }