Недавно делал что-то подобное через api. Сначала доставал список разделов через CIBlockSection::GetList, потом уже доставал через CIBlockElement::GetList элементы из нужного раздела. По факту получились вкладки для табов. Кликнули нужную категорию, показали ее элементы.