Gracias por la información, @claudiahub. El problema que describes es muy común en PrestaShop 1.7.7.7. El módulo productcomments sí tiene métodos para obtener estos datos, pero no están pensados para ser utilizados directamente en un ProductController override sin un poco de trabajo adicional.
El ProductComment::getAverageGrade() que mencionas es de hecho el método correcto para obtener la media, y para el conteo de comentarios aprobados, el método ProductComment::getNbComments es útil, pero necesita un pequeño ajuste. Aquí te muestro cómo podrías modificar tu ProductController para obtener la media y el número total de comentarios aprobados correctamente:
class ProductController extends ProductControllerCore
{
public function initContent()
{
parent::initContent();
$product = $this->product;
// Obtener datos de comentarios directamente del módulo productcomments
$averageGrade = ProductComment::getAverageGrade((int)$product->id);
$nbComments = (int) ProductComment::getNbComments((int)$product->id);
$this->context->smarty->assign(array(
Explicación de los cambios:
ProductComment::getAverageGrade((int)$product->id): Este método sí existe en el módulo productcomments y te devolverá un array con la media de las valoraciones. Accedemos a la media con ['avg'].
ProductComment::getNbComments((int)$product->id): Este método te devuelve el número total de comentarios aprobados para el producto.
Con estos datos asignados a Smarty, ya podrías crear tu bloque JSON-LD en el archivo .tpl de tu producto. Sin embargo, ten en cuenta que los overrides del core pueden ser frágiles y complicar las actualizaciones.
Para una solución más robusta y que no se rompa con las actualizaciones de PrestaShop, te recomendaría considerar un módulo dedicado. Por ejemplo, nuestro módulo Comentarios sobre el producto: fragmento enriquecido de reseñas ya se encarga de generar el JSON-LD de forma automática y compatible, asegurando que Google detecte correctamente tus rich snippets sin necesidad de tocar el código del core.