По каким причинам я не знаю, не выводит подкатегории и все тут. Я его и так и сяк. Код из источников я модифицировал под свои переменные, получилось вот что.
Сначала в файле PHP из БД выбираю все, что видимое в таблице с категориями и кладу в массив $catalog. Там и id самой категории и id ее родителя (для корневых id=0), имя, маркер видимости и все остальное. Никак не сортирую массив, как выбрал, так и выбрал.
В нужном месте вставляю шаблон:
{include file="category_tree.tpl.html" parent='0'}
Здесь parent='0' означает, что выборка начнется с корневых категорий, у которых id родителя 0.
Далее сам шаблон:
{section name=i loop=$catalog}
//Сначала выбираем корневые категории
{if $catalog[i][3] == $parent} //[3] - ячейка с id родительской категории в массиве
{$catalog[i][2]}<br/> //[2] - это ячейка с именем категории в массиве
// Теперь у этой категории ищем подкатегории, у которых родительская категория $catalog[i][0]
{include file="category_tree.tpl.html" parent=$catalog[i][0]} //[0] - это ячейка с id категории
//Шаблон должен подключиться снова, но за корневую категорию уже взять текущую категорию и заодно проверить, а нет ли в подкатегориях своих подкатегорий и так до бесконечности, пока они не закончатся
{/if}
{/section}
Проблема возникает при подключении файла внутри {section}. Если удалить его, то шаблон упешно выведет список корневых категорий. Но при подключении шаблона внутри себя сервер выдает 502 ошибку. В чем проблема и почему не работает код - не могу понять, всю ночь ковыряю.
Уже думал сделать все на пыхе и вывести функцию в шаблоне, но это же некрасиво. Как бы ни хотелось думать, что это лишь временно, и что потом я обязательно вернусь и все сделаю как положено, через шаблон, этого не произойдет, так что, нужно делать сразу нормально.
В общем, как-то так..