404NotFound_ Posted July 11, 2024 Share Posted July 11, 2024 Bonjour, Je suis entrain d'améliorer les micro-données envoyée à Google afin d'améliorer les résultats des test enrichis et j'ai quelques soucis pour récolter les avis avec "Aggregateating". Je m'explique sur la page d'accueil de ma boutique j'ai des sliders qui présente un certains nombre de produits par catégories, c'est gérer par le module "featuredproducts". J'ai donc ouvert le fichier product.tpl ( chemin : themes/lifestyle/modules/featuredproducts/view/templates/hook/product.tpl) dans ce dossier afin d'ajouter le code HTML pour y insérer les micro-données comme ceci : <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> <meta itemprop="ratingValue" content="{$product_average_rate|default:'4.4'}" /> <meta itemprop="reviewCount" content="{$product_review_count|default:'86'}" /> </div> (ps: la valeur default me permettait de testé afin de voir si quand je fais le test résultat enrichi ça remonter et oui, maintenant je dois récupérer depuis l'API par produit grâce aux variables) J'ai donc crée un controller dans le dossier "featuredproducts" à la racine de mon presta sous le chemin /featuredproducts/controller/front/FeaturedProductsController.php voici son contenu que j'ai fais : <?php class FeaturedProductsController extends ModuleFrontController { public function initContent() { parent::initContent(); // Récupération de l'ID du produit depuis les paramètres GET $productId = (int) Tools::getValue('id_product'); // URL de l'API pour récupérer les données de notation $apiUrl = 'LIEN DE LAPI ICI' . $productId . '.json'; // Initialisation des variables $rate = null; $count = null; $errorMessage = ''; try { // Récupération des données depuis l'API $json = @file_get_contents($apiUrl); if ($json !== false) { $data = json_decode($json, true); if (json_last_error() === JSON_ERROR_NONE) { // Extraction des données de moyenne et de sommes d'avis $rate = isset($data['rate']) ? $data['rate'] : null; $count = isset($data['count']) ? $data['count'] : null; } else { $errorMessage = "JSON Decode Error: " . json_last_error_msg(); } } else { $errorMessage = "API Request Error: Unable to retrieve data from " . $apiUrl; } } catch (Exception $e) { $errorMessage = "API Error: " . $e->getMessage(); } // Assignation des données à Smarty pour l'affichage dans le template $this->context->smarty->assign([ 'product_average_rate' => $rate, 'product_review_count' => $count, 'api_error_message' => $errorMessage, ]); // Affichage du template correspondant $this->setTemplate('module:featuredproducts/views/templates/hook/product.tpl'); } } Et malgré cela rien ne remonte.. Hors j'ai fais un petit script PHP sur le cotée pour tester l'API Produit qui elle me récupère les données sous la même logique : <?php // ID de produit valide pour le test $productId = 32; $apiUrl = 'URL DE LAPI PRODUIT' . $productId . '.json'; $json = @file_get_contents($apiUrl); if ($json === false) { echo "API Request Error: Unable to retrieve data from " . $apiUrl; } else { $data = json_decode($json, true); if (json_last_error() === JSON_ERROR_NONE) { echo "Rate: " . (isset($data['rate']) ? $data['rate'] : 'Not found') . "\n"; echo "Count: " . (isset($data['count']) ? $data['count'] : 'Not found') . "\n"; } else { echo "JSON Decode Error: " . json_last_error_msg(); } } Le rendu sur le navigateur donne : Rate: 4.8 Count: 5 Je vous remercie pour votre aide, je me gratte la tête depuis ce matin ! Arg, bonne journée tout le monde. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now