It may sound easy to differentiate between Shopware apps and plugins. But, let you know it will demand extra effort.
Let’s try to get it better.
The system in which traditional PHP MVC developer is interested lies in the plugin system.
Apps, the other extension system permits you to register an external URL endpoint with a Shopware system to exchange API credentials and register webhooks that Shopware calls when something happens in a Shopware system.
Apps permit you to build an independent system with which a Shopware system will interact. But, apps will not allow PHP code execution relevant to a Shopware system. For that, you need Shopware plugins.
And a thin abstraction layer lying on the top of Symfony’s bundle system is a Shopware plugin.
Let’s get deeper to understand more about Shopware apps and plugins.
This post will introduce Shopware plugins and apps, differences between the two, and similarities.
The robust extension mechanism, Plugins are used to override, extend, and modify almost all the software parts. Simultaneously, they may prove to be harmful also for some of the reasons.
To add complex functionalities or to craft significant changes, such as dynamic variations, products imports, customer tracking, customized products or content, custom price calculation, connecting 3P identity providers, and more, you need to write a plugin for that.
In Shopware, plugins are primarily an extension of Symfony bundles. Such plugins and bundles offer their resources, like controllers, tests, or assets.
While programming plugins for Shopware, an abstract base class gets ready to diminish the friction that all the plugins extend from the plugin base class.
In this class, helper methods exist that help initialize parameters, such as the plugin’s root path and name in the dependency injection container.
Moreover, every plugin looks like a composer package.
You can integrate Plugins into Shopware and perform almost everything with them.
You can follow the Shopware guide to learn how to craft a plugin.
Some aspects listed under Plugins (above) are tough to operate in cloud environments. That’s why a less intrusive and distinct pattern comes in.
Apps permit event-based integration that communicates with the external services using the synchronous API.
The logic of most of the apps stays within that 3rd-party service, so developers need to ensure it offers proper security, reliability, and protection to their services.
Moreover, it provides the user a free choice of using any operating environment, programming languages, or frameworks according to the Shopware app’s guidelines (we will cover this later in this post).
Furthermore, apps offer theme support. So, apps hold full functionalities of themes. Plus, apps support payments, and that’s why the users are forwarded to the payment provider.
The app system permits the users to modify and extend the appearance (will cover this later in this post) and functionality of Shopware. It uses well-defined extensions points, and the users can hook into, to implement their particular use case.
The app system is crafted to be decoupled from Shopware. It comes with two advantages:
Freedom of Choice
The user should understand the interface between Shopware and his app to start with his app development. He doesn’t need any specialized skill in the internal structure of Shopware or inner workings.
Also, he holds the freedom to select a framework or programming language of his choice for app implementation. This is attained by decoupling the deployment of Shopware and the app by using webhooks and Admin API to communicate between Shopware and the app, despite directly using programming language constructs.
Fully Cloud Compatible
By decoupling Shopware and the app, the user’s app automatically becomes compatible for usage in a multi-tenant cloud system. That’s why he can use the app within self-hosted shops and Shopware Cloud apps.
A dedicated manifest file defines the central interface between the app and Shopware. The manifest is something that connects Shopware and the app.
Moreover, it defines the features the user’s app uses also, how Shopware can link to the app.
Communication between Shopware and An App
Shopware interacts with an app-only exclusively HTTP-Requests. This way, one can pick a tech stack for his app till he can serve HTTP-Requests.
Shopware accounts for notifying the user over the events happening in his shop by posting to HTTP-Endpoints that the user defines in the manifest file.
While conducting such an event, the app is allowed to use the Shopware API to get extra data that the app needs.
A registration handshake is conducted while the app is being installed to secure this communication. During this, the app is verified, which says that Shopware communicates with the appropriate app backend server, and the app receives the credentials to authenticate against the API.
App Modifies The Look of Storefront
Difference between Shopware App & Plugin
Let’s check out the difference between a Shopware app and a plugin. We will consider some tasks to differentiate between the two.
|Change storefront appearance||Yes||Yes|
|Add admin modules||Yes||Yes|
|Modify database structure, add custom entities||Yes||No|
|Integrate payment providers||Yes||Yes|
|Publish in the Shopware Store||Yes||Yes|
|Install in Shopware 6 Cloud Shops||No||Yes|
|Install in Shopware 6 on-Premise Shops||Yes||Yes|
|Add custom logic/routes/commands||Yes||Yes|
|Control order of style/template inheritance||No||Yes|
Similarities between Shopware App and Plugin
Shopware App and plugin come with some similarities also. Let’s discuss.
Shopware apps and plugins allow:
- Alteration of storefront appearance
- Attachment of admin modules
- Execution of webhooks
- Payment providers integration
- Launch in the Showare Store
- Installation in Shopware 6 on-Premise Shops
- Add custom logic/routes/commands
We hope you find this post informative and helpful as it includes relevant learning about Shopware plugins and apps, the difference between these, and similarities.
If you need more assistance with Shopware development, you can connect with us. We are always here to serve you the best.