Hola @inmalab, entiendo perfectamente tu frustración. La aproximación de modificar IndexController directamente es arriesgada y, como bien dices, muy frágil ante las actualizaciones de PrestaShop. La razón principal es que, aunque initContent se ejecuta, la renderización final del index.tpl y la asignación de variables ya están muy ligadas a los módulos que se enganchan al displayHome.
Para conseguir tu objetivo de forma robusta y mantenible en PrestaShop 1.7.4.0, la mejor práctica es crear un pequeño módulo (o utilizar uno existente) que implemente el hook displayHome. Este módulo será el encargado de obtener tus productos específicos y asignarlos a su propio archivo .tpl que luego se inyectará en la homepage.
Aquí tienes un ejemplo simplificado de cómo un módulo podría hacerlo. Imagina un módulo llamado myhomepageproducts:
// myhomepageproducts/myhomepageproducts.php
// ... dentro de la clase MyHomepageProducts ...
public function hookDisplayHome($params)
{
// IDs de productos que quieres mostrar
$mySpecificProductIds = [10, 25, 30];
$customProducts = [];
foreach ($mySpecificProductIds as $id_product) {
$product = new Product($id_product, true, $this->context->language->id);
if (Validate::isLoadedObject($product) && $product->active) {
Luego, en views/templates/hook/myhomepageproducts.tpl dentro de tu módulo, podrías iterar sobre {$my_custom_homepage_products} para mostrarlos. Esta es la forma correcta de integrar contenido dinámico en la página de inicio.
Para una solución más completa y con panel de administración para seleccionar los productos sin tocar el código, te recomiendo un módulo dedicado como gestionar productos en la página sin tocar el código core. Estos módulos están diseñados para ser totalmente compatibles y actualizables.