Shop module
Commerce Unbundled: Extension
Edition |
Incubator (services) |
||
Issues |
|||
Git |
|||
Latest |
0.0.1
|
The Shop module provides basic e-commerce features like product and inventory management, shopping cart process. etc., based on data hosted outside the Magnolia JCR repository.
There is no payment integrated yet. |
This module is at the INCUBATOR level. |
Installing with Maven
Maven is the easiest way to install the module. Add the following to your bundle:
<dependency>
<groupId>info.magnolia.shop</groupId>
<artifactId>magnolia-shop-core</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>info.magnolia.shop</groupId>
<artifactId>magnolia-shop-app</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>info.magnolia.support.compatibility</groupId>
<artifactId>magnolia-livecopy-authoring-compatibility</artifactId> (1)
<version>1.0</version>
</dependency>
<dependency>
<groupId>info.magnolia.shop</groupId>
<artifactId>magnolia-shop-rest</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>info.magnolia.shop</groupId>
<artifactId>magnolia-shop-workflow</artifactId>
<version>0.0.1</version>
</dependency>
1 | This is only needed if using Live Copy. |
Configuration
The Shop Core module allows ecommerce (shop) related entities in external SQL Database.
Ensure you have installed the module. |
To function properly this module requires configurations in module configuration location.
Configurations can be located in JCR config node or in the config.yaml
file.
We need to pass database connection information to the module.
This is the minimum configuration that needs to be passed to the module so it can connect to a database instance.
datasource:
username: [db_user]
password: [db_assword]
url: [db_url]
driver: [db_driver]
migration:
path: shop-core/dbmigration/[db_type]
run: [true/false]
datasource:
username: user
password: password
url: jdbc:mysql://127.0.0.1:3306/shop
driver: com.mysql.cj.jdbc.Driver
migration:
path: shop-core/dbmigration/mysql
run: true
All properties that are prefixed with "shop." will be passed to the ebean server. This way we can easily tune the ebean ORM framework.
More info on Ebean ORM is available on this ebean documentation link. |
This module does not create a database. Database MUST EXISTS and database user has to have also CREATE/DROP/ALTER RIGHTS
on that database.
For the database connection to work, we need appropriate database driver to be available on the classpath.
For example, if we are using mysql database with tomcat server we need to place "mysql-connector-java-8.0.18.jar"`
in tomcat lib folder.
Shop App
The Shop App module allows browsing and managing shop related entities (catalogs, products, categories, shippings, prices, etc … ) from Magnolia’s Custom Content Application.
This module is dependent on Shop Core module. Ensure you have installed the module. |
Shop Rest
The Shop Rest module provide rest api which can be used to manage shop related entities (CRUD operations).
This module is dependent on Shop Core module. Ensure you have installed the module. |
Shop Workflow
The Shop Workflow module provide functionality for managing orders and transiting order from one state to another.
For example:
-
accept order
-
mark order as dispatched
This module is dependent on Shop Core module. Ensure you have installed the module. |
Usage
After installation there will be a new item bar in the main admin central screen as shown in below screenshot.
Settings app
First thing to do is to open the Settings app to define all the shop basics like catalogs, currencies, taxes…
-
Catalogs - Products will be assigned to catalogs.
-
Categories - Categories of products, tree structure.
-
Shipping - Shipping methods, different rates can be assigned depending on the purchase price.
-
Currencies - Define currencies and exchange rates.
-
Tax rates - Define different tax rates.
-
Units - Define units for weight, volumen and dimension.
-
Custom fields - Products fields can be extended by adding custom fields.
-
Field templates - Custom fields need to be assigned to templates to be able to use them.