21

Product support

Visit this product's website for support.

Categories

Overview

Shopaholic is a scalable and highly flexible e-commerce ecosystem for October CMS. The core plugin is provided free of charge and includes the following set of features:

  • Products and trade offers management.
  • Product image gallery management.
  • Products grouping by categories and brands.
  • Multi-currency, taxes and price types management.
  • Data import (product, offers, categories, brands) from a CSV/XML file.
  • Basic products filtering (by category, brand etc.) and sorting (by price, new additions etc.)

In order to cater to the growing scalability demands of a project, the ecosystem provides extra plugins to extend the basic functionality. With these plugins sellers can:

Besides you can provide a better UX for the customer with the ability to:

The development of Shopaholic’s ecosystem is guided by the similar philosophies of October CMS and Unix like operating systems, where the main focus is to create simple microarchitecture solutions that communicate with each other through smart APIs.

One one hand, this approach allows keeping performance, security, and functionality of the code to a high standard. On the other hand, it provides a clean and smooth back-end UI/UX that isn't over-bloated with the features.

Installation

Regardless of the installation type you choose, you must install Toolbox plugin, which is a required dependency for Shopaholic.

Artisan

Using the Laravel’s CLI is the fastest way to get started. Just run the following commands in a project’s root directory:

php artisan plugin:install lovata.toolbox
php artisan plugin:install lovata.shopaholic

Composer

If you prefer Composer run following commands in a project’s root directory:

composer require lovata/oc-toolbox-plugin
composer require lovata/oc-shopaholic-plugin
php artisan october:up

It's not recommended way because of possible collisions with the updating of the plugins.

Once the plugins are installed take a look at the official documentation for the possible next steps.

Documentation

The complete official documentation of the ecosystem can be found here.

Performance

As an environment for a testing measurements was used simple Digital Ocean droplet with this configuration:

  • Dual Core CPU
  • 4 Gb RAM
  • Ubuntu 18.04
  • PHP 7.2.0
  • Apache 2.4
  • MySQL 5.7
Products number Catalog page load time Product list filtering time
210 100-150 ms 80-100 ms
21 000 900-1100 ms 500-600 ms

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.

Code quality

We ensure the high quality of our plugins and provide you with full support. All of our plugins have extensive documentation. The quality of our plugins goes through rigorous testing, we have launched automated testing for all of our plugins. Our code conforms with the best writing and structuring practices. All this guarantees the stable work of our plugins after they are updated with new functionality and ensures their smooth integration.

Get involved

If you're interested in the improvement of this project you can help in the following ways:

  • bug reporting and new feature requesting by creating issues on plugin GitHub page;
  • contribution to a project following these instructions;
  • localization to your language using Crowdin service.

License

© 2019, LOVATA Group, LLC under GNU GPL v3.

Developed by Andrey Kharanenka.

The following plugin is required
This plugin is also included into the following bundles
The following plugins extend or depend on the plugin
Filter for Shopaholic
$49.99

Filter for Shopaholic

Shopaholic E-Commerce extension: Adds filtration by price, properties, discount, quantity

83 projects
# 13 in Paid of all time.
$49.99

Filter for Shopaholic

Shopaholic E-Commerce extension: Adds filtration by price, properties, discount, quantity

Properties for Shopaholic
$14.99

Properties for Shopaholic

Shopaholic E-Commerce extension: allows to fill in additional properties for products and offers

149 projects
# 4 in Paid of all time.
$14.99

Properties for Shopaholic

Shopaholic E-Commerce extension: allows to fill in additional properties for products and offers

Orders for Shopaholic
Free

Orders for Shopaholic

Shopaholic E-Commerce extension: allows adding products to cart and making orders

1,925 installations
# 35 in Free of all time.
Free

Orders for Shopaholic

Shopaholic E-Commerce extension: allows adding products to cart and making orders

Omnipay for Shopaholic
Free

Omnipay for Shopaholic

Shopaholic E-Commerce extension: adds intergation with ignited/laravel-omnipay package

541 installations
# 164 in Free of all time.
Free

Omnipay for Shopaholic

Shopaholic E-Commerce extension: adds intergation with ignited/laravel-omnipay package

Popularity for Shopaholic
$5

Popularity for Shopaholic

Shopaholic E-Commerce extension: adds popularity counter for products, allows sorting products by popularity

43 projects
# 21 in Paid of all time.
$5

Popularity for Shopaholic

Shopaholic E-Commerce extension: adds popularity counter for products, allows sorting products by popularity

Tags for Shopaholic
$9.99

Tags for Shopaholic

Shopaholic eCommerce extension: allows to group products by tags

37 projects
# 50 in Paid of all time.
$9.99

Tags for Shopaholic

Shopaholic eCommerce extension: allows to group products by tags

Reviews for Shopaholic
$9.99

Reviews for Shopaholic

Shopaholic eCommerce extension: allows to write product reviews, sort products by rating

36 projects
# 34 in Paid of all time.
$9.99

Reviews for Shopaholic

Shopaholic eCommerce extension: allows to write product reviews, sort products by rating

Related Products for Shopaholic
$5

Related Products for Shopaholic

Shopaholic eCommerce extension: adds the ability to create related products

54 projects
# 16 in Paid of all time.
$5

Related Products for Shopaholic

Shopaholic eCommerce extension: adds the ability to create related products

Accessories for Shopaholic
$5

Accessories for Shopaholic

Shopaholic E-Commerce extension: allows to create accessories for products

34 projects
# 31 in Paid of all time.
$5

Accessories for Shopaholic

Shopaholic E-Commerce extension: allows to create accessories for products

Search for Shopaholic
$9.99

Search for Shopaholic

Shopaholic eCommerce extension: allows to search products, categories, tags, brands.

70 projects
# 11 in Paid of all time.
$9.99

Search for Shopaholic

Shopaholic eCommerce extension: allows to search products, categories, tags, brands.

Sphinx for Shopaholic
Free

Sphinx for Shopaholic

Shopaholic eCommerce extension: allows to search products, categories, brands, tags with Sphinx

222 installations
# 309 in Free of all time.
Free

Sphinx for Shopaholic

Shopaholic eCommerce extension: allows to search products, categories, brands, tags with Sphinx

Compare for Shopaholic
$14.99

Compare for Shopaholic

Shopaholic E-Commerce extension: introduces product comparison features

20 projects
# 63 in Paid of all time.
$14.99

Compare for Shopaholic

Shopaholic E-Commerce extension: introduces product comparison features

Viewed Products for Shopaholic
$9.99

Viewed Products for Shopaholic

Shopaholic eCommerce extension: allows users to view the history of viewed products

21 projects
# 47 in Paid of all time.
$9.99

Viewed Products for Shopaholic

Shopaholic eCommerce extension: allows users to view the history of viewed products

PayPal for Shopaholic
$14.99

PayPal for Shopaholic

Shopaholic eCommerce extension: grants your project full power over Paypal payment gateway

24 projects
# 55 in Paid of all time.
$14.99

PayPal for Shopaholic

Shopaholic eCommerce extension: grants your project full power over Paypal payment gateway

My clients
$5

My clients

Allow you to get feedback, orders, requests from users of the site and notify you by email

6 projects
# 131 in Paid of all time.
$5

My clients

Allow you to get feedback, orders, requests from users of the site and notify you by email

Discounts for Shopaholic
$14.99

Discounts for Shopaholic

Shopaholic E-Commerce extension: create discounts for products with Shopaholic

24 projects
# 17 in Paid of all time.
$14.99

Discounts for Shopaholic

Shopaholic E-Commerce extension: create discounts for products with Shopaholic

Coupons for Shopaholic
$29.99

Coupons for Shopaholic

Shopaholic eCommerce extension: create coupons for products with Shopaholic

28 projects
# 23 in Paid of all time.
$29.99

Coupons for Shopaholic

Shopaholic eCommerce extension: create coupons for products with Shopaholic

Campaigns for Shopaholic
$24.99

Campaigns for Shopaholic

Shopaholic eCommerce extension: easily create campaigns with Shopaholic

15 projects
# 33 in Paid of all time.
$24.99

Campaigns for Shopaholic

Shopaholic eCommerce extension: easily create campaigns with Shopaholic

Wish List for Shopaholic
$9.99

Wish List for Shopaholic

Shopaholic eCommerce extension: allows users to add products to their wish list.

16 projects
# 35 in Paid of all time.
$9.99

Wish List for Shopaholic

Shopaholic eCommerce extension: allows users to add products to their wish list.

Stripe for Shopaholic
$14.99

Stripe for Shopaholic

Adds possibility to pay for orders using Stripe

5 projects
# 105 in Paid of all time.
$14.99

Stripe for Shopaholic

Adds possibility to pay for orders using Stripe

Labels for Shopaholic
$9.99

Labels for Shopaholic

Shopaholic e-сommerce extension: adds the ability to mark products with custom labels

3 projects
# 140 in Paid of all time.
$9.99

Labels for Shopaholic

Shopaholic e-сommerce extension: adds the ability to mark products with custom labels

Yandex Kassa for Shopaholic
$14.99

Yandex Kassa for Shopaholic

Payment gateway integration for Shopaholic. 54-FZ Supported!

4 projects
# 77 in Paid of all time.
$14.99

Yandex Kassa for Shopaholic

Payment gateway integration for Shopaholic. 54-FZ Supported!

ROBOKASSA for Shopaholic
$14.99

ROBOKASSA for Shopaholic

Payment gateway integration for Shopaholic.

3 projects
# 93 in Paid of all time.
$14.99

ROBOKASSA for Shopaholic

Payment gateway integration for Shopaholic.

Sberbank for Shopaholic
$14.99

Sberbank for Shopaholic

Payment gateway integration for Shopaholic.

2 projects
# 130 in Paid of all time.
$14.99

Sberbank for Shopaholic

Payment gateway integration for Shopaholic.

LiqPay for Shopaholic
$14.99

LiqPay for Shopaholic

Payment gateway integration for Shopaholic.

2 projects
# 113 in Paid of all time.
$14.99

LiqPay for Shopaholic

Payment gateway integration for Shopaholic.

Uniteller for Shopaholic
$14.99

Uniteller for Shopaholic

Payment gateway integration for Shopaholic.

1 project
# 169 in Paid of all time.
$14.99

Uniteller for Shopaholic

Payment gateway integration for Shopaholic.

CDEK for Shopaholic
$25

CDEK for Shopaholic

Integration with CDEK Delivery

3 projects
# 109 in Paid of all time.
$25

CDEK for Shopaholic

Integration with CDEK Delivery

Laravel Scout for Shopaholic plugin
Free

Laravel Scout for Shopaholic plugin

Shopaholic eCommerce extension: allows to search products, categories, tags, brands using laravel Scout.

14 installations
# 450 in Free of all time.
Free

Laravel Scout for Shopaholic plugin

Shopaholic eCommerce extension: allows to search products, categories, tags, brands using laravel Scout.

PayKeeper for Shopaholic
$14.99

PayKeeper for Shopaholic

PayKeeper payment gateway integration for Shopaholic.

1 project
# 177 in Paid of all time.
$14.99

PayKeeper for Shopaholic

PayKeeper payment gateway integration for Shopaholic.

Payeer for Shopaholic
$14.99

Payeer for Shopaholic

Payeer payment gateway integration for Shopaholic.

1 project
# 176 in Paid of all time.
$14.99

Payeer for Shopaholic

Payeer payment gateway integration for Shopaholic.

Interkassa for Shopaholic
$14.99

Interkassa for Shopaholic

Interkassa payment gateway integration for Shopaholic

0 projects
# 178 in Paid of all time.
$14.99

Interkassa for Shopaholic

Interkassa payment gateway integration for Shopaholic

Free-Kassa for Shopaholic
$14.99

Free-Kassa for Shopaholic

Free-kassa payment gateway integration for Shopaholic.

0 projects
# 179 in Paid of all time.
$14.99

Free-Kassa for Shopaholic

Free-kassa payment gateway integration for Shopaholic.

The following themes use this plugin
Product settings

First steps

Let's start getting acquainted with plugin and take the first steps with quick start guide:

  • Step 1: It works!
  • Step 2: Create product page.
  • Step 3: Render the catalog menu using the category tree.
  • Step 4: Create category page with render list of child categories.
  • Step 5: Create catalog page with render list of products.

The full plugin documentation is available here.

ProductList component

The component allows to work with ProductCollection class objects.

Method list

make($arElementIDList = null)

Example: render of product list

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

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

{% set obProductList = ProductList.make().sort(ProductList.getSorting()).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.description }}">
                {% endif %}
                <div>{{ obProduct.preview_text }}</div>
            </div>
        {% endfor %}
    </div>
{% endif %}

Get collection of products, apply filter by flag "active" and category ID + Pagination component.

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

{# Get product collection #}
{% set obProductList = ProductList.make().sort(ProductList.getSorting()).active().category(obCategory.id) %}

{# Get array with pagination buttons #}
{% set iPage = Pagination.getPageFromRequest() %}
{% set arPaginationList = Pagination.get(iPage, obProductList.count()) %}

{# Apply pagination to product collection and get array with product items #}
{% set arProductList = obProductList.page(iPage, Pagination.getCountPerPage()) %}

{% if arProductList is not empty %}

    {# Render product list #}
    <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.description }}">
                {% endif %}
                <div>{{ obProduct.preview_text }}</div>
            </div>
        {% endfor %}
    </div>

    {# Render pagination buttons #}
    {% if arPaginationList is not empty %}
        {% for arPagination in arPaginationList %}
            <a href="?page={{ arPagination.value }}" class="{{ arPagination.class }}">{{ arPagination.name }}</a>
        {% endfor %}
    {% endif %}
{% endif %}
getAvailableSorting()

Get array with available sorting keys (see).

getSorting()

Get active sorting key value.

onAjaxRequest()

Empty method for ajax request.

ProductPage/ProductData component

The component allows to work with ProductItem class objects.

Usage example:

[ProductPage]
slug = "{{ :slug }}"
==

{# Get product item #}
{% set obProduct = ProductPage.get() %}
<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.description }}">
    {% endif %}
    <span>Category: {{ obProduct.category.name }}</span>
    <span>Brand: {{ obProduct.brand.name }}</span>
    <span>Brand: {{ obProduct.brand.name }}</span>
    {% set obOffer = obProduct.offer.first() %}
    {% if obOffer.isNotEmpty()%}  
        <span>Price: {{ obOffer.price }} {{ obOffer.currency }}</span>
    {% endif %}
    <div>{{ obProduct.description|raw }}</div>
</div>

CategoryList component

The component allows to work with CategoryCollection class objects.

Method list

make($arElementIDList = null)

Example: render of category list

Get tree of categories. Example is used in render of category menu.

{% set obCategoryList = CategoryList.make().tree() %}
{% if obCategoryList.isNotEmpty() %}
    <ul class="category-menu-wrapper">
        {% for obCategory in obCategoryList if obCategory.product_count > 0 %}
            <li data-id="{{ obCategory.id }}">{{ obCategory.name }}
                {% if obCategory.children.isNotEmpty() %}
                    <ul class="category-child-menu-wrapper">
                        {% for obChildCategory in obCategory.children if obChildCategory.product_count > 0 %}
                            <li>{{ obChildCategory.name }}</li>
                        {% endfor %}
                    </ul>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endif %}

CategoryPage/CategoryData component

The component allows to work with CategoryItem class objects.

Usage example:

[CategoryPage]
slug = "{{ :slug }}"
==

{# Get category item #}
{% set obCategory = CategoryPage.get() %}
<div data-id="{{ obCategory.id }}">
    <h1>{{ obCategory.name }}</h1>
    {% if obCategory.preview_image is not empty %}
        <img src="{{ obCategory.preview_image.path }}" title="{{ obCategory.preview_image.title }}" alt="{{ obCategory.preview_image.description }}">
    {% endif %}
    <div>{{ obCategory.description|raw }}</div>
    {% if obCategory.children.isNotEmpty() %}
        <ul>
            {% for obChildCategory in obCategory.children %}
                <li>{{ obChildCategory.name }}</li>
            {% endfor %}
        </ul>
    {% endif %}
</div>

BrandList component

The component allows to work with BrandCollection class objects.

Method list

make($arElementIDList = null)

Example: render brand list

Get collection of brands, apply sorting + filter by flag "active"

{% set obBrandList = BrandList.make().sort().active() %}
{% if obBrandList.isNotEmpty() %}
    <div class="brand-list-wrapper">
        {% for obBrand in obBrandList %}
            <div data-id="{{ obBrand.id }}">
                <h1>{{ obBrand.name }}</h1>
                {% if obBrand.preview_image is not empty %}
                    <img src="{{ obBrand.preview_image.path }}" title="{{ obBrand.preview_image.title }}" alt="{{ obBrand.preview_image.description }}">
                {% endif %}
                <div>{{ obBrand.preview_text }}</div>
            </div>
        {% endfor %}
    </div>
{% endif %}

Get brand collection, apply sorting + filter by flag "active" + Pagination component

{# Get brand collection #}
{% set obBrandList = BrandList.make().sort().active() %}

{# Get array with pagination buttons #}
{% set iPage = Pagination.getPageFromRequest() %}
{% set arPaginationList = Pagination.get(iPage, obBrandList.count()) %}

{# Apply pagination to brand collection and get array with brand items #}
{% set arBrandList = obBrandList.page(iPage, Pagination.getCountPerPage()) %}

{% if arBrandList is not empty %}

    {# Render brand list #}
    <div class="brand-list-wrapper">
        {% for obBrand in obBrandList %}
            <div data-id="{{ obBrand.id }}">
                <h1>{{ obBrand.name }}</h1>
                {% if obBrand.preview_image is not empty %}
                    <img src="{{ obBrand.preview_image.path }}" title="{{ obBrand.preview_image.title }}" alt="{{ obBrand.preview_image.description }}">
                {% endif %}
                <div>{{ obBrand.preview_text }}</div>
            </div>
        {% endfor %}
    </div>

    {# Render pagination buttons #}
    {% if arPaginationList is not empty %}
        {% for arPagination in arPaginationList %}
            <a href="/{{ arPagination.value }}" class="{{ arPagination.class }}">{{ arPagination.name }}</a>
        {% endfor %}
    {% endif %}
{% endif %}

BrandPage/BrandData component

The component allows to work with BrandItem class objects.

Usage example:

[BrandPage]
slug = "{{ :slug }}"
==

{# Get brand item #}
{% set obBrand = BrandPage.get() %}
<div data-id="{{ obBrand.id }}">
    <h1>{{ obBrand.name }}</h1>
    {% if obBrand.preview_image is not empty %}
        <img src="{{ obBrand.preview_image.path }}" title="{{ obBrand.preview_image.title }}" alt="{{ obBrand.preview_image.description }}">
    {% endif %}
    <div>{{ obBrand.description|raw }}</div>
</div>

Breadcrumbs component

The component helps to render catalog breadcrumbs.

Method list

getByCategoryID($iCategoryID)

Example: render ob breadcrumbs for category page

The method helps to render breadcrumbs list of category page. The method returns with breadcrumbs items (field list: id, name, slug, active).

[CatalogBreadcrumbs]

[CategoryPage]
==

{% set obCategory = CategoryPage.get() %}
{% set arBreadcrumbs = CatalogBreadcrumbs.getByCategoryID(obCategory.id) %}
{% if arBreadcrumbs is not empty %}
    <ul>
        {% for arItem in arBreadcrumbs %}
            <li data-id="{{ arItem.id }}" class="{% if arItem.active %} _active {% endif %}">
                {{ arItem.name }}
            </li>
        {% endfor %}
    </ul>
{% endif %}
getByProductID($iProductID)

Example: render ob breadcrumbs for product page

The method helps to render breadcrumbs list of product page. The method returns array with breadcrumbs items (field list: id, name, slug, active). Result array has product data and category list.

[CatalogBreadcrumbs]

[ProductPage]
==

{% set obProduct = ProductPage.get() %}
{% set arBreadcrumbs = CatalogBreadcrumbs.getByProductID(obProduct.id) %}
{% if arBreadcrumbs is not empty %}
    <ul>
        {% for arItem in arBreadcrumbs %}
            <li data-id="{{ arItem.id }}" class="{% if arItem.active %} _active {% endif %}">
                {{ arItem.name }}
            </li>
        {% endfor %}
    </ul>
{% endif %}
  • Found the plugin useful on 23 Jul, 2019

    Great plugin. Especially good ecosystem of plug-ins, which has evolved and continues to evolve. Just setup what you need and save days and weeks of development. Faced with the need to refine part of the catalog for our needs - quickly received feedback and support from the developers. Well and the code, separately pleasure to read comments and the strict logic of classes. I wish my code was just as awesome)

  • author

    Replied on 23 Jul, 2019

    Thank you for using Shopaholic!

    You're right, Shopaholic is modular by its nature. We've worked hard to make it easy and possible at all. So feel free to develop your plugins for the ecosystem. We're always open to new ideas and ready to help with it!

  • Found the plugin useful on 26 Jun, 2019

    One of the greatest plugins here. The gorgeous code quality with a powerful architecture, the real "Beast" in one word. Highly recommended for use in any e-commerce projects.

  • author

    Replied on 23 Jul, 2019

    Thank you for using Shopaholic and for such high praise!

  • Found the plugin useful on 18 Jan, 2019

    Great project with top code quality. It's a good point to start a quality commercial solution.

    If Shopaholic did not exist, it would be worth creating! :)

  • author

    Replied on 18 Jan, 2019

    Thank you for your feedback!

    The main reason why we've started to develop Shopaholic was exactly that it didn't exist a couple of years ago! ;)

  • Found the plugin useful on 27 Aug, 2018

    Shopaholic is a great shopping suite. The idea to has free basic plugins is great to starting a catalog or small shop site. And made it more powerful with the paid plugins. I use it on a couple of sites and I glad to work with this suite.

    Is great, good job !!!

  • author

    Replied on 18 Jan, 2019

    Thank you for your review, Alvaro!

    We're glad to hear you enjoyed the idea of our ecosystem!

    Have a nice experience with Shopaholic!

  • Found the plugin useful on 24 Mar, 2018

    Is SEO planned? Or how to implement?

  • author

    Replied on 11 May, 2018

    Hi!

    Thank you for using Shopaholic! We're happy you enjoyed it!

    We have published a Mighty SEO plugin for managing SEO fields. You can also use other solutions (For example SEO Manager plugin).

  • Found the plugin useful on 23 Feb, 2018

    Database structure looks clean, the code looks clean. However, a Shopaholic them is a Must Have! Fortunately, we found your basic theme on github and installed it, but we are waiting for a mature theme. Now we are testing your plugins. Overall, is a great job!

  • author

    Replied on 6 Mar, 2018

    Hi!

    Thank you for using Shopaholic! We're happy you enjoyed it!

    As you mentioned there are no available themes in October Marketplace at the moment. Our main focus in the next few month is growing of Shopaholic functionality. After that, we plan to publish a lot of themes from simple basis theme to ready for use fully customizable theme.

    Besides, we help other developers to develop their own themes for Shopaholic ecosystem. Stay tuned!

  • Found the plugin useful on 22 Jan, 2018

    Hi, the project looks promising, I read the code, it looks clean. . Do you have the shop theme / pages so people can quickly try to use shopaholic? The backend side are nice, the examples are working, but it lacks the frontend pages to at least we can place order, pay and watch order status. . 22/1/18.

  • author

    Replied on 22 Jan, 2018

    Hi!

    Thank you for using Shopaholic! There is a long list of extensions for Shopaholic on our roadmap and we're focusing on them at the moment. As well we plan to publish a demo site with a large number of examples until the spring.

    Besides, we're in a collaboration with one of active October community members, who works on the theme with Shopaholic support.

    Stay tuned!

  • Found the plugin useful on 8 Dec, 2017

    I have insert the code for displaying product list but it doesn't display my products is there any configuration I need to setup? I also set to active all my products.

  • author

    Replied on 10 Dec, 2017

    Hi!

    Thank you for using Shopaholic! We've answered your question at your Github issue.

    Have a nice experience with Shopaholic! ;)

1.22.5

Fixed bug with deactivating items in import from XML files.

Jun 28, 2019

1.22.4

Removed deleted offers from sorting by price.

Jun 21, 2019

1.22.3

Fixed attaching of children categories to parent category in script of import from XML.

May 31, 2019

1.22.2

Added "deactivate" fields to config of XmlImportSettings model.

May 29, 2019

1.22.1

Fixed command shopaholic:import_from_xml.

May 29, 2019

1.22.0

Added customizable import from xml file. Thanks to Rolands Zeltins. His donation made this feature available for everyone.

May 29, 2019

1.21.2

Fix error with saving offer without prices.

Apr 01, 2019

1.21.1

Fixed labels for tax settings.

Feb 27, 2019

1.21.0

Added multicurrency. Added taxes. Added price types. Added shopaholic:check.table.integrity artisan command.

Feb 27, 2019

1.20.0

Added Slovak language. Thanks for contribution vosco88.

Feb 27, 2019

1.19.1

Fixed permissions for promo block menu item. Thanks for contribution Andreas Kosmowicz.

Nov 21, 2018

1.19.0

Added translatable slug in Product, Brand, Category, PromoBlock models.

Nov 18, 2018

1.18.0

Added German language. Thanks for contribution Gerald.

Nov 15, 2018

1.17.0

Added Japanese language. Thanks for contribution pikanji.

Nov 07, 2018

1.16.1

Added annotations of filterByDiscount(), filterByQuantity() methods to OfferCollection class.

Nov 05, 2018

1.16.0

Added block with description about import of product/offer properties from CSV file.

Nov 02, 2018

1.15.0

Added import product, offers, categories, brands from CSV file in backend. Requires Toolbox plugin version 1.18.0 and later

Nov 01, 2018

1.14.1

Remove vendor folder from plugin.

Oct 28, 2018

1.14.0

Added "additional_category" field to ProductItem class.

Oct 21, 2018

1.13.1

Added annotations for integration with Coupons for Shopaholic, Discounts for Shopaholic, Campaigns for Shopaholic plugins.

Oct 16, 2018

1.13.0

Added PromoBlock model. Promo blocks are sections of content that you can place throughout your eCommerce website and advertise products, offers, discounts, campaigns, and other activity. Added PromoBlockData, PromoBlockPage, PromoBlockList components. Added PromoBlockItem, PromoBlockCollection classes.

Oct 15, 2018

1.12.0

Added type returned by methods in AbstractStore * classes

Aug 07, 2018

1.11.3

Fix error in ProductCollection class, if product list by category is empty.

Jul 30, 2018

1.11.2

Fix work with *Store classes in *Handler classes.

Jul 11, 2018

1.11.1

Adding "field.additional_category" value to lang files. Fixed displaying "additional categories" field only for update/preview forms.

Jun 25, 2018

1.11.0

Adding getPageUrl() method to ProductItem, BrandItem classes.

Jun 24, 2018

1.10.0

Adding relation between Product model and additional categories. Adding ability to get list of products by category ID list, by the parent category ID.

Jun 22, 2018

1.9.0

Add PriceHelperTrait, TraitCached in models. Add active() method to CategoryCollection class. Move PriceHelper class from Shopaholic plugin to Toolbox plugin. Add new store classes. Refactoring *Store, *Item, *Collection classes. Requires Toolbox plugin version 1.10.0 and later.

Jun 21, 2018

1.8.0

Add integration with "Viewed products for Shopaholic" plugin

Mar 22, 2018

1.7.0

Added translation into French. Thanks for contribution philmarc.

Mar 16, 2018

1.6.0

Add integration with "Compare for Shopaholic"

Mar 11, 2018

1.5.0

Add integration with Search for Shopaholic / Sphinx for Shopaholic plugins

Feb 21, 2018

1.4.1

Update annotations for "Reviews for Shopaholic" plugin. Fix $dates array in Product model. Thanks for contribution Alexander Shapoval.

Feb 14, 2018

1.4.0

Replace code of product sorting by popularity and rating from Shopaholic to extension plugins. Add event "shopaholic.sorting.get.list" for custom sorting of products. Add integration with "Related products for Shopaholic" and "Accessories for Shopaholic" plugins

Feb 04, 2018

1.3.1

Fix: processing of the "nesting" flag for the menu type "catalog"

Jan 15, 2018

1.3.0

!!! Add menu types for integration with the StaticPage plugin. Add getPageUrl() method to the CategoryItem class. Requires Toolbox plugin version 1.4.0 and later. Thanks for contribution Alvaro Cánepa.

Jan 14, 2018

1.2.3

!!! Adding additional cache cleaning for the sorted list of brands, after the creation of a new brand. Requires Toolbox plugin version 1.3.0 and later.

Jan 08, 2018

1.2.2

Add additional cache cleaning after category reordering

Dec 15, 2017

1.2.1

Remove php short tags from offers/update.htm

Dec 15, 2017

1.2.0

preview_image, images fields in item classes returns \System\Models\File class objects. Add integration with "Reviews for Shopaholic" plugin

Dec 13, 2017

1.1.0

Add integration with "Popularity for Shopaholic" and "Tags for Shopaholic" plugins

Dec 08, 2017

1.0.0

Initialize plugin.

Dec 06, 2017