Hooks utilisés
| Hook | Rôle |
|---|---|
moduleRoutes | Route module-websourcegooglereviews-avis : règle = WEBSOURCEGOOGLEREVIEWS_SLUG (défaut avis-clients), contrôleur avis. |
displayWebsourceReviews | Badge de note (étoiles, note sur 5, nombre d'avis, lien). À appeler dans le thème : {hook h='displayWebsourceReviews'}. Vide tant qu'aucune note n'existe. |
displayFooterProduct | Bloc « Avis clients » de repli sur une fiche produit sans avis propre. |
displayProductRating | Badge de note près du titre, pour les thèmes qui appellent ce hook (Warehouse, thèmes non reconnus). |
displayProductAdditionalInfo | Même badge pour Classic et Hummingbird, qui n'appellent pas displayProductRating. |
displayHeader | JSON-LD de la page des avis. |
actionFrontControllerSetMedia | views/css/front.css (badge). |
actionWebsourceBuilderRegisterBlocks | Bloc « Avis Google » de Websource Builder. |
actionWebsourceThemeExport, actionWebsourceThemeImport | Section googlereviews (version 1) : adresse de la page et libellé de la source uniquement. Avis et notes ne sont jamais exportés. |
Page publique
Contrôleur controllers/front/avis.php, template views/templates/front/avis.tpl, feuille views/css/avis.css.
- Avec URL simplifiées :
https://boutique.example/avis-clients. - Sans URL simplifiées :
index.php?fc=module&module=websourcegooglereviews&controller=avis.
WebsourceGooglereviews::getPageUrl() renvoie toujours <base>/<slug> (forme réécrite).
Variables Smarty : $ws_aggregate, $ws_reviews, $ws_page_url, $ws_shop_name, $ws_theme (classic, hummingbird, warehouse, other).
API PHP
$a = WebsourceGooglereviews::getAggregate();
// ['rating' => 4.3, 'count' => 6, 'best' => 5, 'worst' => 3, 'imported_at' => '2026-10-09', 'source' => 'Google']
$reviews = WebsourceGooglereviews::getReviews(); // tous les avis, par position
$complete = WebsourceGooglereviews::getCompleteReviews(); // 4-5 étoiles, texte non tronqué
$rows = WebsourceGooglereviews::parseBulkText("5|Marie D.|Super accueil|mars 2026");
$family = WebsourceGooglereviews::themeFamily();
getAggregate() : si la table contient des avis, moyenne arrondie à une décimale, nombre, note maximale et minimale ; sinon les valeurs de la « note globale ».
Intégration dans le JSON-LD d'un thème :
{assign var="wsgrAggregate" value=WebsourceGooglereviews::getAggregate()}
{if $wsgrAggregate.count > 0}
,"aggregateRating": {"@type": "AggregateRating", "ratingValue": "{$wsgrAggregate.rating}", "bestRating": "{$wsgrAggregate.best}", "worstRating": "{$wsgrAggregate.worst}", "reviewCount": "{$wsgrAggregate.count}"}
{/if}
Avec websourcethemeconfig, le nœud Organization reprend déjà ces valeurs.
Données
| Clé / table | Contenu |
|---|---|
{prefix}websource_google_review | id_websource_google_review, author, rating (1 à 5), age_text, visited_text, review_text, position |
WEBSOURCEGOOGLEREVIEWS_RATING, _COUNT, _BEST, _WORST | Note globale manuelle. |
WEBSOURCEGOOGLEREVIEWS_IMPORTED_AT | Date du dernier enregistrement (AAAA-MM-JJ). |
WEBSOURCEGOOGLEREVIEWS_SLUG | Adresse de la page (défaut avis-clients). |
WEBSOURCEGOOGLEREVIEWS_SOURCE_LABEL | Libellé de la source (défaut Google). |
Formulaires de configuration
POST sur index.php?controller=AdminModules&configure=websourcegooglereviews&token=… :
| Bouton | Champs | Effet |
|---|---|---|
wsgr_save_aggregate | wsgr_source_label, wsgr_rating, wsgr_count, wsgr_worst, wsgr_best | Note globale. |
wsgr_paste_import | wsgr_paste_text | GoogleReviewsParser::parse() puis remplacement de tous les avis. |
wsgr_bulk_import | wsgr_bulk_text | parseBulkText() puis remplacement de tous les avis. |
wsgr_add_review | wsgr_new_rating, wsgr_new_author, wsgr_new_text | Ajout d'un avis. |
wsgr_delete_review | id_review | Suppression d'un avis. |
Format reconnu par GoogleReviewsParser (texte français du panneau d'avis Google) : <Nom>Avis de Google<note>/5 · il y a <ancienneté><texte>Visité en <mois> [<année>], répété par avis. Format personnalisé : note|auteur|texte[|date de visite] (séparateur | ou ;, auteur vide = « Client »).
Repli sur les fiches produit
- Désactivé pour un produit qui a un avis approuvé dans
{prefix}iqitreviews_products(lecture seule). - Bloc : trois avis au plus, pris dans
getCompleteReviews()à partir deid_product % nombre d'avis. - Aucun
ReviewniAggregateRatingde niveau produit n'est émis.
Bloc Websource Builder
Classe GoogleReviewsBlock, libellé « Avis Google », catégorie « Boutique ».
| Champ | Valeurs |
|---|---|
| Titre | défaut « Ils nous font confiance » ; vide = pas de titre |
| Présentation | badge Pastille compacte, banner Grand bandeau |
Données structurées
Sur la page des avis, s'il existe des avis individuels : ItemList de Review (author, reviewRating 1 à 5, reviewBody, itemReviewed → {base}#organization). Pas de datePublished (la source ne donne que des durées relatives).
Templates et CSS
Surchargeables dans themes/<theme>/modules/websourcegooglereviews/views/templates/ : front/avis.tpl, hook/footer-badge.tpl, hook/product-rating-fallback.tpl, hook/product-reviews-fallback.tpl.
Classes : .ws-avis-page, .ws-avis-hero, .ws-avis-summary, .ws-avis-score, .ws-avis-stars, .ws-avis-grid, .ws-avis-card, .ws-footer-reviews, .ws-footer-reviews__stars, .ws-pdp-store-rating, .ws-pdp-reviews-fallback, .ws-gr-banner, .ws-theme-<famille>.