Тут я ничем помочь не смогу, т.к. надо смотреть именно Ваш код.не понимаю почему, но отключает категории только где парент Главная категория
Модули я пишу и выкладываю под штатный код shopCMS, а у Вас, как я понимаю, код уже многократно изменен.
В общем случае я обычно копаю следующим способом - сохраняю в файл в корень сайта интересующие меня переменные и массивы из нужной точки кода и потом смотрю, что в них не так. Для $cats это будет:
$f=fopen('1.txt','w');
fwrite($f,var_export($cats,true)."\n");
fclose($f);
Функция var_export для того, чтобы даже не задумываться, какого типа переменную я сохраняю.