1 Вы зря начали изобретать велосипед для вывод крошек - есть же встроенный компонент.
2 Естественно не работает - код раздела, это код раздела, а id это id. У вас новигация по коду, вы пытаетесь использовать id на странице товара. Простое добавление кода обязательно пооможет если он у вас есть в $secion.
Но видимо его нет. А откуда вы на странице товара берете $secion никто кроме вас не знает.
В крайнем случае, раз у вас есть id раздела в $arResult['IBLOCK_SECTION_ID'] можно в лоб получить этот раздел с помощью CIBlockSection::GetList по id и из этих данных взять CODE.
Что-то такое примерно:
$arSelect = Array(
'ID',
'CODE'
);
$arFilter = Array(
'IBLOCK_ID'=> $arResult['IBLOCK_ID'],
'ID' => $arResult['IBLOCK_SECTION_ID']
);
$db_res = CIBlockSection::GetList(
Array(),
$arFilter,
true,
$arSelect
);
if ($ar_result = $db_res->GetNext()) {
$CODE = $ar_result['CODE'];
}
В $CODE будет ваш код раздела.