15

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

91 projects
# 14 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

160 projects
# 7 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

2,284 installations
# 40 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

643 installations
# 64 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

47 projects
# 30 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

38 projects
# 48 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

40 projects
# 32 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

59 projects
# 22 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

39 projects
# 26 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.

79 projects
# 15 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

263 installations
# 302 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

21 projects
# 62 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

24 projects
# 40 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

26 projects
# 46 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
# 143 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

27 projects
# 34 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

31 projects
# 33 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

18 projects
# 38 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.

18 projects
# 43 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

8 projects
# 5 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
# 146 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!

5 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
# 110 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
# 139 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
# 133 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
# 170 in Paid of all time.
$14.99

Uniteller for Shopaholic

Payment gateway integration for Shopaholic.

Yandex Market for Shopaholic
Free

Yandex Market for Shopaholic

Shopaholic eCommerce extension: allows to export products to Yandex Market

76 installations
# 355 in Free of all time.
Free

Yandex Market for Shopaholic

Shopaholic eCommerce extension: allows to export products to Yandex Market

VK Goods for Shopaholic
Free

VK Goods for Shopaholic

Shopaholic e-commerce extension: allows to export products to VK Goods (vk.com)

52 installations
# 436 in Free of all time.
Free

VK Goods for Shopaholic

Shopaholic e-commerce extension: allows to export products to VK Goods (vk.com)

CDEK for Shopaholic
$25

CDEK for Shopaholic

Integration with CDEK Delivery

3 projects
# 132 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.

19 installations
# 461 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.

UTM Analytics for Shopaholic
$10

UTM Analytics for Shopaholic

Plugin provides UTM-analytics for Shopaholic orders

0 projects
# 185 in Paid of all time.
$10

UTM Analytics for Shopaholic

Plugin provides UTM-analytics for Shopaholic orders

CloudPayments for Shopaholic
$14.99

CloudPayments for Shopaholic

Payment gateway integration for Shopaholic.

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

CloudPayments for Shopaholic

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 not useful on 24 Oct, 2019

    If you plan to use this plugin for something more than you see on example themes of same vendor, bury your expectations first. Documentation is terrible, even for paid addons. For example, if you need pretty standatd breadcrumbs, documentation tells you how to do it by 30%.

    • Oh you need links in your breadcrumbs? We will not provide a working code example for that nested categories you needed, here take a dumb simple parentCategory/category example of linkless breadcumbs.
    • You need a compare of catalog items? Alright, buy this, and you'll get a server-side-only ability to add/remove/list items in compare list, no code examples, no template examples, do EVERYTHING on your own.
    • Want to know how to use our "useful" paid plugins in your frontend theme? You can download lame bootstrap theme, or buy $100 theme with one example of our filter plugin usage (not confirmed, I will not be surprised if not). Also import feature is very questionable.
    • Want to import catalog items from CSV with images? Ok, we will duplicate your images once putting them into separate attachments storage and also as many times as you have to use the same image url. What, you already have an organized image hierarchy? Well, ***k you!

    So for full bundle price you do not get a half of lame free opencart's functionality. This plugin is not the right choice to build decent eShop, at least for now (fall 2019). More than year have passed since I decide to try this plugin on one of non urgent projects and we still here. Maybe because only single person working on it, doing titanic work, so what did you expect? Hope they'll hire more people some day).

  • author

    Replied on 31 Oct, 2019

    We're sorry for your poor experience with Shopaholic products. We're a small team of October CMS enthusiasts working hard on making it the best platform for e-commerce! ?️

    Due to limited resources, the documentation isn't exhaustive some times. We know it. But there's a lot of ways to get the needed information:

    We're always ready to help when it requested. Unfortunately, we didn't receive any requests from your side.

    If you plan to use this plugin for something more than you see on example themes of same vendor, bury your expectations first. Documentation is terrible, even for paid addons. For example, if you need pretty standatd breadcrumbs, documentation tells you how to do it by 30%.

    Oh you need links in your breadcrumbs? We will not provide a working code example for that nested categories you needed, here take a dumb simple parentCategory/category example of linkless breadcumbs.

    The answer to your issue can be found here.

    You need a compare of catalog items? Alright, buy this, and you'll get a server-side-only ability to add/remove/list items in compare list, no code examples, no template examples, do EVERYTHING on your own.

    You should have paid attention to the fact that no one official Shopaholic plugin has a view code part (MVC). This is the main philosophy of the project. It doesn't put barriers in front of the developer in the implementation of the custom functionality on the front-end side of the project. Of course, this requires a higher qualification of the developer. But we work to reduce the entry threshold by providing NPM packages (shopaholic-cart, shopaholic-filter-panel, shopaholic-wish-list, etc.) for the products, extending the functionality of the free Bootstrap theme (as well as adding new themes including free) and on improving documentation, of course.

    Want to know how to use our "useful" paid plugins in your frontend theme? You can download lame bootstrap theme, or buy $100 theme with one example of our filter plugin usage (not confirmed, I will not be surprised if not). Also import feature is very questionable.

    You can try out all of the plugins on the demo site (manager/manager) for free. We plan to switch the theme on it from UI Kit to Bootstrap one with the support of all of the plugins on the front-end. As for the import feature, I hope its description in the new documentation will be helpful for you.

    Want to import catalog items from CSV with images? Ok, we will duplicate your images once putting them into separate attachments storage and also as many times as you have to use the same image url. What, you already have an organized image hierarchy? Well, ***k you!

    Shopaholic provides a reliable and secure way to store product images. The answer to your question is here.

    I mentioned the new documentation we're working on at the moment. It's open-sourced so we're open to merge any PR's with the additions and improvement. This is how open-source works!

    As for technical stuff, we are confidently and responsible for the quality of architecture and any line of the code. While comparing the cost of Shopaholic with other major e-commerce platforms you should compare the cost of extending the provided functionality and the cost of the project ownership in the future.

    Summing up, communication is the best way to solve issues! Please, find us in the public places I mentioned above and ask for help. We'll be happy to change your experience with Shopaholic! ?️

  • 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.23.1

Added step attribute to offer price field in backend view

Oct 21, 2019

1.23.0

Added ability to show catalog with active price type. Added annotations for integration with Digital product for Shopaholic plugin.

Oct 21, 2019

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