Шаблоны большинства компонентов Bitrix написаны по MVC, но некоторые компоненты реализованы на коленке и не задумываясь о сложностях кастомизации и использования!
Пример: компонент bitrix:sale.basket.basket верстка на таблицах, исправляем на более приемлемую для нас (но не сильно, буквально изменим table|tr|td на div) меняем классы, т.к. к ним привязаны стили и называются они не понятно.
Теперь фокус! компонент не работает или работает частично! Оказывается разработчики добавили в js генерацию верстки!!! т.е. js сам прописывает table|tr|td и их предустановленные классы!
В итоге, кроме template.php | style.css нужно перебрать весь script.js !
Если написать всё по MVC - тогда "мухи отдельно, котлеты отдельно" функционал JS должен быть завязан только на ID элементов!! Чтобы кастомизация шаблона не убивала кучу времени разработчиков!