The Reviews & Ratings plugin (plg_solidshop_review) adds a complete product review system to your Solidshop store: 5-star ratings, written reviews with an optional title, a rating-distribution summary, helpful voting, abuse reporting, optional photo uploads, and an admin moderation queue — plus the aggregateRating structured data that lets search engines show star ratings next to your products.

Everything is stored in your own database. There is no third-party review service, no external script on your product pages, and no monthly fee. See the Reviews & Ratings extension page for the high-level feature overview.

Requirements

  • Joomla 6.0 or later
  • PHP 8.4 or later
  • Solidshop 1.1.0 or later — the installer refuses to run against an older core, so update Solidshop first if you are behind. 1.1.0 is what ships the product-card rating hook the plugin renders into
  • A Joomla captcha plugin installed and enabled, if you want CAPTCHA on the review form (optional — see Spam protection)

Installation

Download the plugin

After purchase, plg_solidshop_review.zip is available from the downloads area of your account on solidshop.app. Your purchase includes 12 months of updates and support.

Install via the Extension Manager

In your Joomla admin, go to System → Install → Extensions, then drag the ZIP file into the upload area. Joomla installs the plugin, creates its three database tables (#__sshop_reviews, #__sshop_review_votes, #__sshop_review_reports), and registers the admin views.

Enable the plugin

Go to System → Manage → Plugins, search for review, and enable Solidshop - Review — the Plugin Manager lists it under its short name, not the full product name. Like every Joomla plugin, it is disabled by default after install.

Two switches, not one. Enabling the Joomla plugin is only half the job — reviews stay hidden until you also turn on Enable Reviews in the Solidshop component options (next section). If you have installed and enabled the plugin but nothing appears on your product pages, this is almost always why.

Turn reviews on

Open the Solidshop options

Go to Solidshop → Dashboard and click Options in the toolbar (or System → Global Configuration → Solidshop), then switch to the Reviews & Ratings tab.

Set “Enable Reviews” to Yes

The remaining settings only appear once this is on. Configure them as described below, then Save & Close.

Check a product page

Open any product on your storefront. A Reviews tab now appears alongside the product description, containing the rating summary, the review list, and (depending on your permission setting) the submission form.

Settings reference

All settings live under Solidshop → Options → Reviews & Ratings and apply store-wide.

Setting Default What it does
Enable Reviews No Master switch. When off, no review tab, no rating summary, and the AJAX endpoint rejects every request.
Require Moderation Yes New reviews are saved as Pending and stay invisible until an admin approves them. Turn off to publish reviews the moment they are submitted.
Enable Helpful Voting Yes Shows “Was this helpful?” buttons on each review and unlocks the Most helpful sort option.
Enable Abuse Reporting Yes Shows a Report link on each review, feeding the Review Reports queue in the admin.
CAPTCHA Do not use Picks which installed Joomla captcha plugin guards the review form. See Spam protection.
Who Can Submit Reviews Anyone (including guests) Anyone, Registered users only, or Verified buyers only. See Who can review.
Allowed Fulfillment Status for Review Verified-buyer mode only. Restricts reviewing to orders that have reached one of the selected fulfillment statuses — e.g. only Delivered orders.
Allow Review Photos No Verified-buyer mode only. Lets buyers attach images to a review. See Review photos.
Max Photo Size (KB) 1024 Per-file upload ceiling, from 128 KB to 10240 KB.

Who can review

The Who Can Submit Reviews setting is the single most important decision here, because it changes where the review form appears.

Anyone (including guests)

The form renders inside the Reviews tab on every product page. Guests are asked for a display name (required) and an email address (optional); logged-in users have their Joomla display name attached automatically. This maximises review volume, and it is the mode where CAPTCHA and moderation matter most.

Registered users only

The form still renders in the Reviews tab, but only for logged-in users. Guests see a short notice inviting them to log in. A registered user can leave one review per product (per variant, where the product has variants).

Verified buyers only

The strictest mode, and the one that produces the trust signal shoppers actually look for. The form disappears from the product page entirely — instead, it appears on the customer’s own order detail page:

  1. The customer logs in and opens Account → Orders, then a specific order.
  2. Below the order, a Review your purchase section lists every product in that order, each with its own star picker, title, body, and (if enabled) photo upload field.
  3. Products already reviewed on that order show a green Already reviewed badge instead of a form.
  4. Published reviews carry a Verified buyer badge on the product page.

Solidshop verifies that the order belongs to the logged-in customer and actually contains the product before accepting the review — the check is server-side, so a crafted request cannot fake a verified review. If you set Allowed Fulfillment Status for Review, the order must additionally sit in one of the selected statuses.

Gate on delivery, not on payment. Selecting a Delivered-style fulfillment status stops customers reviewing a product they have paid for but not yet received — which is where most one-star “where is my order?” reviews come from. Leave the field empty and any order containing the product qualifies, no matter how recent.

One review per customer, per product

A logged-in customer cannot review the same product twice; for a product with variants the check is per variant. In verified-buyer mode the check is scoped to the order, so a customer who buys the same product again on a later order can review it again from that order.

Moderating reviews

Go to Solidshop → Reviews (or Marketing → Reviews if you use the Solidshop admin menu preset). Every review lives in one of four states:

Status Visible publicly? Counts toward the rating?
PendingNoNo
ApprovedYesYes
RejectedNoNo
SpamNoNo

Tick one or more rows and use the toolbar buttons — Approve, Reject, Mark as Spam, or Delete — to act in bulk. The list can be searched by review title, body, or reviewer name, filtered by status, and sorted by rating or date.

Click a review to open the edit form, where you can correct a typo, fix a mis-clicked star rating, or edit the reviewer name before approving. Attached photos are shown here too, so you can check them before the review goes live.

Average ratings recalculate on status change. A product’s review count, average score, and star distribution are derived from approved reviews only, and are recomputed whenever you approve, reject, or delete one. Nothing to rebuild by hand.

Recent reviews on the dashboard

The plugin adds a Recent Reviews widget to the Solidshop dashboard showing the five newest reviews with their product, rating, and status, plus a link straight into the queue. It is the fastest way to notice a one-star review the day it lands.

Handling abuse reports

When abuse reporting is on, any logged-in visitor can flag a published review as Spam, Offensive, Fake, or Other. Reports collect under Solidshop → Review Reports, grouped so you can see which reviews are attracting repeat flags.

Two toolbar actions resolve a report: Dismiss (the review is fine, clear the flag) or Mark as Spam (unpublish the review and close the report). Reporting is deliberately restricted to logged-in users — an anonymous report button is an invitation to brigading.

Each customer can file one report per review, enforced by a database constraint rather than by an application check a concurrent request could race. A second attempt is answered with “you have already reported this review” instead of adding a duplicate to your queue.

Both actions are rate-limited per account. A single customer can cast at most 30 helpful votes and file at most 10 abuse reports per hour. These are anti-abuse floors, not merchant preferences — a shopper acting in good faith never approaches them — so they are deliberately not exposed as settings. The count is kept per user rather than per IP address: IP buckets are bypassable with any VPN and simultaneously lock out everyone behind a shared office connection.

Helpful voting

Each published review shows a “Was this helpful?” prompt with Yes and No buttons for logged-in visitors. A visitor can vote once per review; the helpful count feeds the Most helpful sort option, so the reviews that other shoppers found useful float to the top instead of just the newest ones. As with reporting, the one-vote rule is backed by a database constraint, so a double-click or a slow connection cannot produce two votes — the second is read as “already voted”.

Review photos

Photo uploads are available in verified-buyer mode only — deliberately, because unrestricted image uploads from anonymous visitors are a liability. Turn on Allow Review Photos and buyers get a file field in the review form on their order detail page.

  • Accepted types: JPEG, PNG, WebP, GIF. The file’s real content type is inspected server-side — renaming payload.php to photo.jpg does not get it through.
  • Size limit: whatever you set in Max Photo Size (1 MB by default), per file. Your PHP upload_max_filesize and post_max_size still apply on top — the lower of the two wins.
  • Storage: files/shop/{store_id}/review/, under randomised filenames.
  • Display: thumbnails in the review card, each linking to the full-size image.

Photos are stored at their original resolution. A generous size limit means large files on disk and in the page. 1024 KB is a sensible ceiling for most stores; raise it only if your products genuinely need detail shots.

Spam protection

The CAPTCHA setting lists every captcha plugin installed and enabled in your Joomla site, so you are not locked into one vendor. Install and configure the captcha plugin first (System → Plugins), then pick it here. Suitable choices include reCAPTCHA, hCaptcha, and the privacy-friendly, self-hosted Altcha — which asks the browser to solve a small proof-of-work puzzle rather than profiling the visitor, and needs no third-party account.

The CAPTCHA is checked server-side on submission. If the selected plugin is later disabled or removed, the form keeps working without a challenge rather than breaking the page — so re-check this setting after any plugin cleanup.

Verified-buyer mode is the strongest spam filter there is. A spammer would have to place and pay for a real order first. If you run in that mode, CAPTCHA is belt-and-braces; in Anyone mode, treat it as essential.

Where reviews appear

Location What renders
Category and module listings A compact star rating with the average score and review count under each product card. Hidden until the product has at least one approved review.
Product page — summary bar Average score and a review count that links down to the tab. Hidden until the product has at least one approved review.
Product page — Reviews tab Big average score, star breakdown per rating level, the review list with sort options (newest, highest, lowest, most helpful) and a Load more button, plus the submission form where applicable.
Account → Orders → order detail Per-product review forms in verified-buyer mode.
Account → My Reviews The customer’s own review history, including pending ones, with their current status.
Admin dashboard The Recent Reviews widget.
Admin → Reviews / Review Reports The moderation queue and the abuse-report queue.

Reviews load five at a time over AJAX, so a product with hundreds of reviews still renders a fast first paint. The first page is server-rendered, which means search engines and visitors without JavaScript still see review content.

Structured data & rich results

Once a product has at least one approved review, the plugin merges an aggregateRating block — average score and review count — plus the five most recent reviews into the Product JSON-LD node that Solidshop already emits on the product page. That is the markup Google reads when deciding whether to show star ratings in search results.

The rating data is merged into the existing Product node rather than published as a second one. Two competing Product entities on one page is a classic reason for Google to decline review snippets despite technically valid markup, so this matters more than it sounds.

Rich results are never guaranteed. Valid markup makes your product eligible for star ratings in search — Google still decides per query. Validate your pages with the Rich Results Test after enabling reviews, and expect indexing to take a while to catch up.

Customising the look

Every review layout is a standard Joomla layout file and can be overridden in your template without touching the plugin — your changes survive updates.

What Override path in your template
The whole Reviews tab html/layouts/com_solidshop/product/tab_reviews.php
A single review card html/layouts/com_solidshop/product/review_item.php
Rating in the product summary bar html/layouts/com_solidshop/product/stats_items.php
Rating on a product card in listings html/layouts/com_solidshop/product/card_stats.php
Review forms on the order detail page html/layouts/com_solidshop/account/order_detail_reviews.php
Account → My Reviews page html/com_solidshop/account/reviews.php

The default layouts use Bootstrap classes, so they inherit Cassiopeia’s styling out of the box.

Troubleshooting

No Reviews tab on the product page

  • Confirm the plugin is Enabled under System → Plugins.
  • Confirm Enable Reviews is set to Yes in Solidshop → Options → Reviews & Ratings. This is the usual culprit — it defaults to No.
  • If your template overrides the product page, make sure the override still renders the plugin tab region.

The review form is missing, but reviews are listed

  • You are probably in Verified buyers only mode — by design, the form lives on the customer’s order detail page, not the product page.
  • In Registered users only mode, guests see a log-in notice instead of the form.
  • A customer who has already reviewed that product does not get a second form.

A submitted review doesn’t show up

  • With Require Moderation on (the default), new reviews sit as Pending until approved. Check Solidshop → Reviews and filter by Pending.
  • The customer can always see their own pending reviews under Account → My Reviews, so point them there if they ask.

“You must be a verified buyer to review this product”

  • The order must belong to the logged-in customer and contain that exact product.
  • If Allowed Fulfillment Status for Review is set, the order must also be in one of those statuses — a customer whose order is still Unfulfilled will hit this message.
  • Reviews submitted as a guest at checkout are not linked to a user account, so the buyer must be logged in with the account that placed the order.

Voting or reporting silently fails

  • Both actions require a logged-in user; the buttons are hidden for guests.
  • Each visitor gets one vote and one report per review — a second attempt is rejected.
  • The per-account hourly ceiling (30 votes, 10 reports) may have been hit. It resets on a rolling hourly window; no admin action is needed.
  • If the page has been open a long time, the Joomla session token may have expired. Reload the page and try again.

Photo upload fails

  • Photos work only in Verified buyers only mode with Allow Review Photos on.
  • Check the file is under your Max Photo Size limit and is a real JPEG, PNG, WebP, or GIF.
  • Check that files/shop/ is writable by the web server — the plugin creates the per-store review/ folder on first upload.
  • Very large images can also trip PHP’s own upload_max_filesize/post_max_size limits before Solidshop sees them.

Star ratings don’t appear in Google

  • The product needs at least one approved review — pending reviews emit no markup.
  • Run the page through the Rich Results Test to confirm the aggregateRating is present.
  • Give it time. Re-indexing is on Google’s schedule, and rich results remain at its discretion even with perfect markup.

Uninstalling

Uninstalling the plugin from System → Manage → Extensions drops its three tables, and with them every review, vote, and report. If you might want that content back, back up those tables first — or simply disable the plugin instead, which hides reviews everywhere while leaving the data intact.

The rating columns the plugin maintains on Solidshop’s own product-stats table are reset to zero at the same time, so no orphaned star ratings are left behind on product cards. Uploaded review photos under files/shop/{store_id}/review/ are left on disk; remove them manually if you want a clean sweep.

Removing Solidshop entirely? Uninstall the add-ons first. Solidshop refuses to uninstall while add-on plugins such as this one are still installed, and names them in the error message. The order matters: an add-on’s own uninstall depends on the core tables and library still being present.