Product support

Visit this product's website for support.



Please, use the following credentials user:manager,password:manager for logging to the Dashboard.

New FREE Shopaholic Bootstrap Theme Available!

Free E-Commerce Bootstrap for Shopaholic theme is now available on October's marketplace. Check out the theme's live demo version. It demonstrates what you can build with Shopaholic and will soon have support for all our plugins and extensions. We will also constantly update it to cover all Shopaholic functionality.

Open to your Ideas!

Let us know if you have any questions, ideas or suggestions! Just drop a line at shopaholic@lovata.com

Live Demo

You can visit our Live Demo site. Sign in to backend using: login - manager, password - manager. You can deploy the demo site locally. To do so, you need to clone the repository, follow the steps from the "Installation guide", install the plugins. As a result, you will receive a copy of the demo site with a full database. Having a ready-made demo site example, you can easily learn how to operate the plugins.

Large Catalog Performance Live Demo

If you would like to know how our plugins perform with large catalogs of products, you can visit our Large Catalog Live Demo that has 21 000 products, 68 000 offers and 210 000 variations of property values.

Below are the performance characteristics for server setup: Dual Core CPU with 4GB of RAM.

For a catalog containing 210 products

Catalog page load time: 100-150 ms

Product list filtering time: 80-100 ms

For a catalog containing 21 000 products

Catalog page load time: 900-1100 ms

Product list filtering time: 500-600 ms


Please join us on #shopaholic channel in October CMS slack chat in order to have quick support on all our products. You will also get all newest updates and insights about our existing and upcoming products!

If you have any specific requests, suggestions or ideas please do not hesitate to send us a message, it will help us make our products even better.

If you don't have access to octobercms.slack.com, please register here

Required Plugins

Recommended Plugins

General information

Reviews for Shopaholic plugin allows clients to post reviews for products on your online shop or marketplace. Reviews provide customers with more insight as to the quality of the product and the level of satisfaction other customers had upon receiving the product. This important feature helps customers in making the final decision and serves as incentive to buy products, therefore increasing conversions.

The plugin extends Shopaholic’s functionality as follows:

  • Customers have the opportunity to review products and rate them (rating range can be set by the admin, for instance from 1 to 5 stars);
  • The overall product rating is generated as an average value based on all received reviews;
  • Before being posted on the website reviews go through moderation;
  • Allows to display a list of reviews for a product;
  • Allows to display the product’s overall rating;
  • Provides additional functionality to sort products by rating.

Get involved and contribute to the project

If you’d like to help us improve the project, you can do so in the following ways:

You can also visit LOVATA’s GitHub page.


© 2018, LOVATA Software Development Company under Commercial License.

Developed by Andrey Kharanenka.

The following plugins are required
This plugin is also included into the following bundles
The following theme uses this plugin
Review list

The full plugin documentation is available here.

Extension ProductItem class

Plugin adds fields:

"review" field in ProductItem object returns ReviewCollection object with sorted reviews for this product.

Example: render product reviews on product page

slug = "{{ :slug }}"

{# Get product item #}s
{% set obProduct = ProductPage.get() %}
<div data-id="{{ obProduct.id }}">
    <h1>{{ obProduct.name }}</h1>
   {# Render product rating #}
    <div>{{ obProduct.rating }}</div>
    {# Get list of reviews #}
    {% set obReviewList = obProduct.review %}
    {% if obReviewList.isNotEmpty() == true %}
            {% for obReview in obReviewList %}
            <li>{{ obReview.comment }}</li>
            {% endfor %}
    {% endif %}

MakeReview component

The component allows to create reviews.

Component properties:

  • Mode (Submit form/Ajax form)
  • Send flash message (only for Ajax mode)
  • Enable redirect
  • Choose page for redirect (the URL of the page will be passed to the review ID, product ID and product slug)

Usage: The component is used to process the review form. To send an ajax request, you must use the MakeReview::onCreate method. Available fields: name, email, phone, comment, rating.

Example 1 (Submit form).

mode = "submit"
redirect_on = 1
redirect_page = "review_success"

{% set arError = MakeReview.getErrorMessage %}
{% set arForm = MakeReview.getOldFormData %}

    <label for="field-email">Email</label>
    <input type="email" id="field-email" placeholder="Email" name="email" value="{{ arForm.email }}">
    {% if arError.message is not empty and arError.field == 'email' %}
        <p>{{ arError.message }}</p>
    {% endif %}

    <label for="field-comment">Comment</label>
    <textarea id="field-comment" name="comment">{{ arForm.comment }}</textarea>
    {% if arError.message is not empty and arError.field == 'comment' %}
        <p>{{ arError.message }}</p>
    {% endif %}

    <label><input type="radio" name="rating" value="1">1</label>
    <label><input type="radio" name="rating" value="2">2</label>
    <label><input type="radio" name="rating" value="3">3</label>
    <label><input type="radio" name="rating" value="4">4</label>
    <label><input type="radio" name="rating" value="5">5</label>

    <input type="hidden" name="product_id" value="10">
    <button type="submit">Submit</button>
{% if arError.message is not empty %}
    <p>{{ arError.message }}</p>
{% endif %}

Example 1 (Ajax request).


The MakeReview.getOldFormData method returns the filled form fields, if the form was sent and an error occurred. The MakeReview.getErrorMessage method returns an error message if the form was sent and an error occurred.

    'message' => 'Error message',
    'field'   => 'email',           //Field name, if there was a validation error

Plugin adds sorting by rating to ProductCollection class ('rating|desc', 'rating|asc').

Example: render of product list

Get collection of product, apply sorting by rating (desc), filter by flag "active" and category ID.

{% set obCategory = CategoryPage.get() %}

{% set obProductList = ProductList.make().sort('rating|desc').active().category(obCategory.id) %}
{% if obProductList.isNotEmpty() %}
    <div class="product-list-wrapper">
        {% for obProduct in obProductList %}
            <div data-id="{{ obProduct.id }}">
                <h1>{{ obProduct.name }}</h1>
                {% if obProduct.preview_image is not empty %}
                    <img src="{{ obProduct.preview_image.path }}" title="{{ obProduct.preview_image.title }}" alt="{{ obProduct.preview_image.alt }}">
                {% endif %}
                <div>{{ obProduct.preview_text }}</div>
        {% endfor %}
{% endif %}
  • Found the plugin useful on 17 Dec, 2019

    Simple and intuitive plugin. Easy to install and expand

  • author

    Replied on 18 Dec, 2019


    Thank you for using Shopaholic products and your review of the Reviews plugin! ?️

    We're happy you've found it easy to use!


Fixed error in MakeReview component

Mar 24, 2024


Added withComment and withRating methods to ReviewCollection class

Mar 14, 2024


Updated composer file

Jul 07, 2023


Added the ability to link reviews to different sites. Added site() method to ReviewCollection class.

Jul 07, 2023


Change lists method to pluck method. Thanks for contribution Nick Khaetsky.

Apr 05, 2022


Added composer.json to plugin

May 01, 2021


Fixed dynamic method in ProductItem class. Requires Toolbox plugin version 1.28.1 and later.

Mar 03, 2020


Update license file

Aug 07, 2018


Add permissions for "Reviews" menu item.

Jul 27, 2018


Fix work with *Store classes in *Handler classes.

Jul 11, 2018


Add new store classes. Refactoring *Store, *Item, *Collection classes. Requires Toolbox plugin version 1.10.0 and later.

Jun 21, 2018


Update logic for new version of CResult class. Requires Toolbox plugin version 1.9.1 and later.

Apr 17, 2018


Added check for isNested flag when expanding forms

Feb 23, 2018


Add "rating_data" field, add "getRatingCount", "getRatingTotalCount", "getRatingPercent" methods to ProductItem class

Feb 08, 2018


Initialize plugin.

Feb 04, 2018