Today’s blog post is meant to spark a twinkle in the eyes of the developers who work with Shopware on the daily. That’s because with the release of Shopware 5, we had the opportunity to refactor our core classes. That means thoroughly scrubbed and polished the main building blocks of our code in order to offer a more efficient software basis. Not only have we brought the classes up to their latest technological standards, but we have modernized the underlying architecture of the core. The aim was to create an architecture that brings the classes together under one namespace – the so-called Shopware Bundles.
Each bundle defines an object field in Shopware and incorporates the required classes. For frontend refactoring, Shopware 5 includes three bundles:
* StoreFrontBundle – central interface for defining data in the frontend
* SearchBundle – abstract product search for Shopware
* SearchBundleDBAL – DBAL implementation of the Search Bundles
Using this new bundle structure, we aim to make processes much easier to understand – therefore making development life easier when it comes to adding new features in Shopware.
Elasticsearch was not only high on the wish list of our Community, but also internally at Shopware. We absolutely wanted to integrate this feature into Shopware 5. With the StoreFrontBundle and the SearchBundle, it is now possible to integrate Elasticsearch with third party plugins.
We are currently working on an Elasticsearch implementation that focuses not only on performance optimization, but also on the architecture in order to allow other developers to easily take advantage of and extend the implementation. As of Shopware 5.1, Elasticsearch will be available with the Community Edition of Shopware, for absolutely no additional cost.
Upcoming shopping cart refactoring
Another theme of refactoring lies within the shopping cart process. The development of a refactoring concept is already running full speed. We have set the following objectives:
* Clear definition of a shopping cart process and the corresponding calculations
* The adaptation of defined interfaces for plugins to existing shopping cart calculations
* Connection for plugins, so that they can define and calculate their own basket items
Once again, here we do not only want to modernize the architecture, but also implement completely new features, laying the groundwork for a more robust system in the future.
The plugin system itself is also constantly evolving. One of the more important topics concern connecting a Dependency Injection Container (DIC), which allows plugin developers to change, overwrite or define their own services.
Another task in the future includes the optimization of existing plugin structures and methods. This makes it worlds easier to add changes to the file structure in Shopware.
Additionally, modernizing the plugin architecture makes it easier for developers to make their own adjustments to the core configuration.
Backend development & lightweight backend modules
In addition to optimizing the attribute extensions system, we are continually working to simplify backend development, therefore simplifying access. We now have project in motion that makes it possible for developers to write backend modules based on HTML as well as extensions from ExtJS.