Please check this article:
https://devs.x-cart.com/getting_started/how-to-apply-design-changes.html
Sometimes you can decorate an existing view class and make its getDefaultTemplate() method to return the path to your custom template file instead of the original one.
But in this case the template is inserted with the help of @ListChild directive, so you should either a) add a new template to the list and remove the existing one in Main::moveTemplatesInLists(); or b) use Main::getSkins() to register a new theme directory and make templates from there overlap original ones (in this case you don't need the @ListChild directive in your custom files, otherwise templates will duplicate themselves on the page).