No description
  • PHP 63.7%
  • Python 18.1%
  • JavaScript 9.2%
  • CSS 7.9%
  • Shell 1.1%
Find a file
2026-03-17 22:34:48 +07:00
.claude Add Claude Code hooks: auto-deploy and block-infra 2026-02-24 03:10:19 +07:00
docs feat: v1.4.0 — Custom CSS tab, ExpertSA theme redesign 2026-03-17 20:46:11 +07:00
mod_google_reviews feat: localize review dates using Joomla language system 2026-03-17 21:55:55 +07:00
pkg_google_reviews feat: v1.3.0 — Add scheduled Google Reviews refresh with Task Scheduler plugin 2026-03-04 20:18:24 +07:00
plans/reports feat: v1.3.0 — Add scheduled Google Reviews refresh with Task Scheduler plugin 2026-03-04 20:18:24 +07:00
plg_task_google_reviews fix: scheduled task uses correct GBP resource path, improve error handling 2026-03-04 20:51:08 +07:00
.env.example Initial commit: Joomla Google Reviews Module 2026-01-22 00:33:09 +07:00
.gitignore Add Google Business Profile API integration (v1.2.0) 2026-02-10 19:20:21 +07:00
build-package.sh feat: v1.3.0 — Add scheduled Google Reviews refresh with Task Scheduler plugin 2026-03-04 20:18:24 +07:00
CLAUDE.md docs: add localization section to CLAUDE.md 2026-03-17 22:34:48 +07:00
docker-compose.yml Add Place ID search feature with AJAX support 2026-01-22 18:37:28 +07:00
mod_google_reviews.zip Fix Swiper carousel CSS display issues 2026-01-22 20:19:01 +07:00
PROJECT_STATUS.md Fix mobile/tablet carousel slides not working 2026-01-25 00:19:28 +07:00
README.md docs: update CLAUDE.md and README for v1.4.0 features 2026-03-17 21:40:51 +07:00
requirement.md Initial commit: Joomla Google Reviews Module 2026-01-22 00:33:09 +07:00

Google Reviews Module for Joomla

Display Google Business Profile reviews on your Joomla website with an elegant carousel and optional detail panel.

Version: 1.4.0 Compatibility: Joomla 4.x / 5.x / 6.x License: GNU GPL v2 or later

Features

  • Google Business Profile API - OAuth 2.0 integration to fetch all reviews (unlimited)
  • Places API Fallback - API key-based fallback with 5-review limit
  • Responsive Carousel - Smooth, touch-friendly review slider powered by Swiper.js
  • Review Detail Panel - Click any review to see the full text in a slide-in panel
  • Rating Summary - Display overall rating and total review count
  • Theme Presets - Light, Dark, ExpertSA, and fully Custom themes
  • Custom CSS Tab - Write CSS rules auto-scoped to your module instance
  • Full Customization - Colors, card styles, corner rounding, shadows, photo sizes
  • Navigation Positions - Center, top-left, top-right, bottom-left, bottom-right
  • Filtering - Show only reviews above a minimum rating
  • Sorting - Most recent or highest rated first
  • Multi-language - English and French included, with original/translated text toggle
  • Review Text Parsing - Automatically separates translated and original text
  • Caching - Reviews are cached to minimize API calls
  • Scheduled Refresh - Joomla Task Scheduler integration for automatic cache updates

Requirements

  • Joomla 4.0+ (tested up to Joomla 6)
  • PHP 8.0+
  • Option 1 (OAuth): OAuth Client ID & Secret for Google Business Profile API (business owner only)
  • Option 2 (API Key): Google Places API key (Get one here)

Installation

  1. Download mod_google_reviews.zip
  2. Go to Extensions → Install → Upload Package File
  3. Upload the ZIP file
  4. Go to Content → Site Modules and find "Google Reviews"

Option 2: Discover Installation

  1. Copy the mod_google_reviews folder to /modules/
  2. Copy mod_google_reviews/media/* to /media/mod_google_reviews/
  3. Go to Extensions → Discover
  4. Click Discover button, then install the module

Configuration

Basic Setup

  1. Go to Content → Site Modules → Google Reviews
  2. Enter your Google API Key
  3. Search for your business using the search field
  4. Select your business from the results (this sets the Place ID)
  5. Click Fetch Reviews to load reviews
  6. Set Position and Menu Assignment
  7. Save & Close

Display Options

Option Description
Show Summary Display rating summary block above carousel
Max Reviews Number of reviews to display (max 5 from API)
Sort Order Most recent or highest rating first
Minimum Rating Filter reviews by star rating
Reviews Per View Number of cards visible at once (1-5)
Show Original Language Show reviews in original language vs. translated

Appearance Tab

Theme Presets:

  • Default - Google-style with blue accents
  • Dark - Dark mode with light text
  • Minimal - Monochrome, no borders or shadows
  • Branded - Your brand color as primary
  • Custom - Full control over all colors

Layout Options:

  • Card style (Minimal / Standard / Detailed)
  • Corner rounding (Square to Large)
  • Show/hide shadows
  • Author photo size (32px / 40px / 56px)
  • Review text lines (3-6 or unlimited)
  • Custom navigation icons (upload SVG)

Review Detail Panel:

  • Enable/disable click-to-expand
  • Position (left or right)
  • Width (narrow / medium / wide)

Custom CSS Tab

Write custom CSS rules that are automatically scoped to your module instance. Includes a collapsible reference of available CSS class names. All rules are sanitized for security.

Advanced Tab

Option Description
Cache Duration Days to cache reviews (default: 30)
Module Class Suffix CSS class suffix for styling
Custom CSS Class Additional CSS classes

API Options

Google Business Profile API (Recommended for all reviews):

  • Unlimited reviews
  • Requires business owner to authorize via OAuth 2.0
  • Returns reviews in original language plus translations
  • Automatic token refresh and error handling

Google Places API (Quick setup with limitations):

  • Maximum 5 reviews per business (Google limitation)
  • Only requires API key
  • No business owner authorization needed
  • Good for testing or limited review display

Troubleshooting

Module Not Displaying

  1. Check Status is set to "Published"
  2. Check Position matches your template
  3. Check Menu Assignment includes current page

No Reviews Showing

  1. Verify your API key is correct
  2. Click Fetch Reviews button in module settings
  3. Ensure the Place ID is set correctly

If reviews appear stacked instead of sliding:

  1. Clear Joomla cache (System → Clear Cache)
  2. Check browser console for JavaScript errors
  3. Verify Swiper CSS is loading properly

Development

See docs/development.md for local development setup with Docker.

# Start Docker environment
docker-compose up -d

# Access Joomla at http://localhost:8080

File Structure

mod_google_reviews/
├── mod_google_reviews.xml    # Module manifest
├── mod_google_reviews.php    # Entry point (Joomla 4)
├── helper.php                # AJAX bridge
├── services/provider.php     # DI container (Joomla 5+)
├── src/
│   ├── Dispatcher/           # Joomla 5 dispatcher
│   ├── Helper/               # Business logic
│   ├── Api/                  # Google API client
│   └── Field/                # Custom form fields
├── tmpl/                     # Templates
├── media/
│   ├── css/                  # Stylesheets
│   └── js/                   # Swiper.js
├── language/                 # en-GB, fr-FR
└── sql/                      # Install/uninstall scripts

Credits

License

GNU General Public License version 2 or later. See LICENSE.