Mam o to toki kodzik ktroy generuje mi drzewko - tzn pobiera jednym zapytaniem wszystkie kategorie, nastepnie odpowiednio sortuje to drzewko.
Nastepnie do kolejnego poziomu kategorii (gdzie PARENT_Id nie jest zero - dodaje odstepy.
Niestety tych odstepow nie dodaje juz do jeszcze kolejnego poziomu.
Czyli wyglada to tak:
Przyklad Kategoria 1 Kategoria 1.1 Kategoria 1.2 Kategoria 1.2.1 - i wlasnie tutaj powinno dodac kolejne wciecie a tego nie robi.
Bardzo prosze o pomoc w rozwiazaniu tego problemu.
Ja myslelm nad wprowdzeniem dodatkowego POLA w tablicy ktroa generuje ten skrypt o naziwe LEVEL.
I tak dla Przykladu ktroy podalem wyzej dla kazdej z tych kategorii zmienna LEVEL wygladala by tak:
Kategoria 1 - LEVEL=0 Kategoria 1.1 - LEVEL=1 Kategoria 1.2 - LEVEL=1 Kategoria 1.2.1 - LEVEL=2 itd.
<? $resdddd = $db->get_results("SELECT ID,PARENT_ID,TITLE,CACHE_URL FROM ".CAT." ORDER BY PARENT_ID, TITLE ",ARRAY_A); // Kolejne wezly drzewa. $level = 0; foreach( $resdddd as $row ){ // Przepisujemy z SQL'a $level = $level + 1; $row['ID'] = (int) $row['ID']; $row['PARENT_ID'] = (int) $row['PARENT_ID']; $tree[$row['ID']] = $row; // Tablica potomkow wezla // Sciezka if ((int) $row['PARENT_ID']) { $tree[$row['ID']]['path'] = ' '.$row['TITLE'].''; } else { $tree[$row['ID']]['path'] = $row['TITLE']; } // Dodajemy wskaznik do wezla do tablicy potomkow jego rodzica (czyli do tablicy braci) $tree[$row['PARENT_ID']]['children'][] =& $tree[$row['ID']]; } // Ustalamy nowa kolejnosc. function setOrderRecursive2(&$tree, &$orderredTree, &$node) { // Wglebiamy sie. { // Dodajemy biezacy wezel do tablicy kolejnosci. $orderredTree[] =& $node['children'][$i]; // Przechodzimy poddrzewo. setOrderRecursive2($tree, $orderredTree, $node['children'][$i]); } } // Wywolujemy $smarty->assign("se",$orderredTree); $szablon ='cats_tree.tpl'; ?>
Z gory dzieki za pomoc.
PS. Oczywiscie jak juz bede mial w tablicy $orderredTree dodatkowa zmienna LEVEL - to wtedy juz w szablonie SMARTY odpowiednio zrobie sobie wciecia za pomoca np.
<td class="tree_{$se.LEVEL}">{$se.TITLE}</td>[/code]