Mam taką tablicę:
Array ( [0
] => Array ( [id
] => 1
[title
] => pierwsza
[parent
] => 0
) [1
] => Array ( [id
] => 2
[title
] => druga
[parent
] => 0
) [2
] => Array ( [id
] => 7
[title
] => czwarta
[parent
] => 0
) [3
] => Array ( [id
] => 5
[title
] => trzecia
[parent
] => 2
) [4
] => Array ( [id
] => 13
[title
] => nagłówekxx
[parent
] => 0
) [5
] => Array ( [id
] => 12
[title
] => nagłówek
[parent
] => 0
) [6
] => Array ( [id
] => 14
[title
] => news
[parent
] => 0
) [7
] => Array ( [id
] => 16
[title
] => nazwa
[parent
] => 0
) [8
] => Array ( [id
] => 15 [title
] => subkategoria
[parent
] => 5 ) )
Wartość klucza parent przechowuje id rodzica. W tym przykładzie rodzicem kategorii o id 15 (subkategoria) jest kategoria o id 5 (trzecia), z kolei jej rodzicem jest id 2 (druga). Więc powinno się to wyświetlić tak:
druga
-trzecia
--subkategoria
Chociaż tego pewnie nie muszę Wam tłumaczyć

Przekazuję tą tablicę do smarty, ale nie jestem w stanie wyświetlić tego z możliwością nieskończonej ilości podkategorii.
Mam nadzieję, że teraz wyjaśniłem w miarę zrozumiale.