Hola @manueltech, los compañeros @danielaonline48 y @sara_madrid tienen toda la razón. En PrestaShop 1.7.x, la arquitectura para añadir nuevas pestañas a la página de producto no es tan dinámica ni flexible como en versiones más recientes o con módulos específicos.
Tu override en ProductController es el lugar correcto para preparar los datos de la página CMS y asignarlos a Smarty. El snippet que has compartido es funcional para ese propósito. Para que sea más claro en el .tpl que hay contenido que mostrar, podríamos añadir una pequeña bandera:
// override/controllers/front/ProductController.php
class ProductController extends ProductControllerCore
{
public function assignProductAndContent()
{
parent::assignProductAndContent();
$id_product = (int)Tools::getValue('id_product');
if ($id_product) {
$cms_page_id = 3; // O mejor, un ID configurable o asociado al producto
$cms = new CMS($cms_page_id, $this->context->language->id);
if (Validate::isLoadedObject($cms)) {
$this->context->smarty->assign([
'custom_cms_tab_title' => $cms->meta_title,
'custom_cms_tab_content' => $cms->content,
'has_custom_cms_tab' => true, // Esta bandera es útil para el .tpl
]);
}
}
}
}
Una vez que el controlador asigna estas variables, el paso crucial que te falta es modificar el archivo de plantilla de tu tema. En el tema Classic, esto suele ser themes/classic/templates/catalog/_partials/product-details.tpl. Deberás buscar las secciones donde se definen las pestañas (<ul class="nav nav-tabs" role="tablist">) y los paneles de contenido (<div class="tab-content" id="tab-content">) y añadir manualmente la lógica para tu nueva pestaña usando las variables Smarty que has asignado ($custom_cms_tab_title, $custom_cms_tab_content).
Esta aproximación, como bien han señalado, funciona pero es propensa a romperse con las actualizaciones del tema o de PrestaShop. Para una solución más robusta y que no tengas que mantener manualmente, especialmente en una tienda en producción, te recomiendo considerar un módulo dedicado. Hay herramientas que te permiten automatizar pestaña cms en la tienda de manera eficiente, asociando contenido CMS a tus productos sin necesidad de tocar código sensible del core o del tema.