Diese Seite ist auch auf Deutsch verfügbar. Zur deutschen Seite wechseln

Insight into Shopware 6 plugin development

Shopware 6

Test Shopware now

Create onlineshop
EN_blog_860x325

Zum Deutschen Artikel

How expandable is a shop system? This is one of the most fundamental questions when it comes to choosing a system. Every system claims to have the best and simplest expandability. In this blog post, I provide an insight into the world of plugin development at Shopware 6 and also present the underlying thoughts and concepts of our plugin system.

 

Well-Established Standards

Our intention for the Shopware 6 plugin system was to be able to offer the same versatile expandability as in Shopware 5, while also making some improvements to the plugin system as such. The developer experience was very important to us right from the start. In Shopware 6, we provide you, the developer, tools, and utilities that allow you to create your own extension in just a few steps.

We are aware that Shopware is just one of many systems that need to be adapted to your needs. That’s why another one of our objectives for Shopware 6 and the plugin system was to keep the learning curve as flat as possible. To that end, we rely on well-established standards. A developer who already has prior knowledge of Vue.js or Symfony, for example, can immediately start developing their own extension without much specialist knowledge. We use the following standards:

Symfony

Administration

  • Vue.js, Vue Router, vue-i18n & VueX
  • SCSS as a CSS pre-processor

Storefront

  • Bootstrap incl. jQuery
  • EcmaScript 6 Vanilla JavaScript
  • SCSS as a CSS pre-processor
  • Automated tests and quality assurance
  • PHPUnit
  • PhpStan
  • Cypress and Jest
  • ESlint

 

All of these technologies are successfully used by thousands of developers around the world and are very well documented. Whether it’s in the form of official documentations, on Stack Overflow, or in numerous tutorials and blog posts; developers provide an incredible amount of informative resources. This in turn helps solve problems or answer questions, and simplifies the development process.

 

Symfony Console

We also provide various console commands to make things easier for you and to increase your productivity. Whether you want to create plugins or themes, or simply clear the cache – these useful commands simplify your work processes. 

As an example, I would like to show you how to generate a new theme:

$ bin/console theme:create MyNewTheme

The required files and the complete folder structure are automatically created for you, so you can start developing a new theme right away.

Once you have activated the theme (which, by the way, is also possible via a console command), we automatically integrate your new theme into our pipeline so that no further changes are necessary on your part. Simply recompile the theme – and your styles become visible.

 

Developer Experience

The experience gained by developers when developing a theme or plugin is important. The more simply and conveniently the development can be embedded into existing workflows, the more productive developers can be. That’s why developer experience doesn’t end with console commands.

Whether you’re in the storefront or administration – we provide a so-called “Hot Module Replacement” mode. When you have saved your changes in the development environment, the changes are automatically recognized and reflected directly in the browser (whether you’re using JavaScript or SCSS). There’s no need for you to rebuild entire applications or refresh the browser. This significantly increases the speed of development.

 

Administration

The administration is where shop operators spend most of their day. It’s therefore important to ensure a consistent design and behaviour throughout the application. To do so, we’ve built our own component library with a total of more than 230 suitable components for every application. Global state management and dependency management are also available. This makes handling the applications and using various services much easier.

In order to simplify the developer’s work in the administration as well, it automatically generates data models based on the defined entities in the system. Duplicate maintenance of the entities, as you may know from other systems, is no longer necessary. The Changeset Generator is equally efficient: Only data that has been changed by the user is sent to the server. As a result, we have been able to reduce the volume of data considerably and increase the system’s performance.

 

Conclusion

We’ve done a lot of work to make Shopware 6 a plugin system that is not only powerful and allows you to implement your ideas and business practices, but also easy to use and convenient for developers to develop.

I would like to invite you to have a closer look at the plugin system. At this year’s digital SCD, Sebastian Seggewiß and I gave a 30-minute talk on the topic, in which we take a closer look at the plugin system and provide you with further information.

Would you like to know more about the topic of plugin development? Then I highly recommend our developer documentation. Here you’ll find guides and tutorials that explain how to customize the various areas of Shopware to your needs. They also provide you with a much deeper insight into the overall system.

 

 

Stay up to date

You are interested in further developer content? Then follow us and be the first to be informed about product releases, updates, security notices, the Shopware Academy, and other important developer topics.

Follow us on Twitter

Join us on Slack