Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
e062c8e
chore: adds last changes from mega-PR
lasomethingsomething May 7, 2026
6d00eda
Update index.md
lasomethingsomething May 7, 2026
deec717
Update index.md
lasomethingsomething May 7, 2026
234dfb0
Update index.md
lasomethingsomething May 7, 2026
b603607
Update twig-function-reference.md
lasomethingsomething May 7, 2026
228fcf7
Update add-custom-cms-blocks.md
lasomethingsomething May 7, 2026
8c5b066
Update index.md
lasomethingsomething May 7, 2026
c4ad1f1
Update message-queue.md
lasomethingsomething May 7, 2026
de1a0b3
Update code-structure.md
lasomethingsomething May 7, 2026
1fc0bf3
Update index.md
lasomethingsomething May 7, 2026
a823494
Update devenv-setup.md
lasomethingsomething May 8, 2026
e7807fb
Update devenv-setup.md
lasomethingsomething May 8, 2026
5b59c55
Update migrate-zip-to-composer-project.md
lasomethingsomething May 8, 2026
018c0ae
Update add-custom-modules.md
lasomethingsomething May 8, 2026
e41ff1e
Update cart-manipulation.md
lasomethingsomething May 8, 2026
218ab99
Update data-loading.md
lasomethingsomething May 8, 2026
0d3bcd4
Update add-custom-cms-blocks.md
lasomethingsomething May 8, 2026
bf8103a
Update creating-plugins.md
lasomethingsomething May 8, 2026
897181a
Update custom-fields-of-type-media.md
lasomethingsomething May 8, 2026
f971229
Update plugin-lifecycle.md
lasomethingsomething May 8, 2026
8295892
Update customize-templates.md
lasomethingsomething May 8, 2026
911f26c
Update index.md
lasomethingsomething May 8, 2026
90199dc
Update webhook.md
lasomethingsomething May 8, 2026
ca38db4
Update phpstan.md
lasomethingsomething May 8, 2026
43424d4
Update in-app-purchase-gateway.md
lasomethingsomething May 8, 2026
7dfb936
fix: update broken links
lasomethingsomething May 11, 2026
82b89f8
Update guides/hosting/infrastructure/optional-packages.md
lasomethingsomething May 12, 2026
32a3df6
Update guides/hosting/infrastructure/optional-packages.md
lasomethingsomething May 12, 2026
d64d6c0
Update guides/hosting/infrastructure/optional-packages.md
lasomethingsomething May 12, 2026
3c68de7
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
eb6248b
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
b7c371e
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
c92b128
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
5544e0d
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
627a645
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
6bc9e1f
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
6732930
Update guides/plugins/plugins/plugin-fundamentals/plugin-lifecycle.md
lasomethingsomething May 12, 2026
1b163d3
fix: correct theme configuration asset path
lasomethingsomething May 12, 2026
83e2017
fix: correct remaining theme asset paths
lasomethingsomething May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions .gitbook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ redirects:
products/plugins/commercial/: products/extensions/commercial/
guides/installation/devenv.html: guides/installation/setups/devenv.html
products/cli/extension-commands/validation.html: products/cli/validation.html
products/cli/project-commands/remote-extension-managment.html: products/cli/project-commands/remote-extension-management.html
products/paas/: products/paas/index.html
products/paas/cli-setup.html: products/paas/shopware-paas/cli-setup.html
products/paas/repository.html: products/paas/shopware-paas/repository.html
Expand Down Expand Up @@ -136,7 +137,6 @@ redirects:
products/paas/shopware/CLI/repository.html: products/paas/shopware/guides/setting-up-repository-access.html
products/paas/shopware/setup-shopware-for-paas.html: products/paas/shopware/get-started/prepare-codebase.html
products/paas/shopware/project_setup.html: products/paas/shopware/get-started/quickstart.html
guides/plugins/plugins/testing/end-to-end-testing.html: guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.html
resources/guidelines/testing/cypress-best-practices.html: guides/plugins/plugins/testing/cypress/cypress-best-practises.html
resources/guidelines/trouble-shoting.html: resources/guidelines/troubleshooting.html
products/extensions/subscriptions/guides/event.html: products/extensions/subscriptions/guides/separate-checkout.html
Expand All @@ -160,6 +160,17 @@ redirects:
guides/plugins/plugins/administration/system-updates/vite.html: guides/upgrades-migrations/administration/vite.html
guides/plugins/plugins/administration/system-updates/vue-migration-build.html: guides/upgrades-migrations/administration/vue-migration-build.html
guides/plugins/plugins/administration/system-updates/vue-native.html: guides/upgrades-migrations/administration/vue-native.html
guides/plugins/plugins/testing/end-to-end-testing.html: guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.html
guides/plugins/themes/add-assets-to-theme.html: guides/plugins/themes/assets/add-assets-to-theme.html
guides/plugins/themes/add-css-js-to-theme.html: guides/plugins/themes/styling/add-css-js-to-theme.html
guides/plugins/themes/add-icons.html: guides/plugins/themes/assets/add-icons.html
guides/plugins/themes/add-theme-inheritance-without-resources.html: guides/plugins/themes/inheritance/add-theme-inheritance-without-resources.html
guides/plugins/themes/add-theme-inheritance.html: guides/plugins/themes/inheritance/add-theme-inheritance.html
guides/plugins/themes/differences-plugins-and-apps-vs-themes.html: guides/plugins/themes/index.html
guides/plugins/themes/override-bootstrap-variables-in-a-theme.html: guides/plugins/themes/styling/override-bootstrap-variables-in-a-theme.html
guides/plugins/themes/override-theme-breakpoints.html: guides/plugins/themes/styling/override-theme-breakpoints.html
guides/plugins/themes/theme-configuration.html: guides/plugins/themes/configuration/theme-configuration.html
guides/plugins/themes/theme-inheritance-configuration.html: guides/plugins/themes/configuration/theme-inheritance-configuration.html
resources/references/upgrades/core/translation/extension-translation.html: guides/upgrades-migrations/extension-translation.html
resources/references/upgrades/core/translation/language-pack-migration.html: guides/upgrades-migrations/language-pack-migration.html
resources/references/upgrades/administration/: guides/upgrades-migrations/administration/
Expand All @@ -176,6 +187,10 @@ redirects:
resources/guidelines/testing/store/quality-guidelines-plugins/: guides/development/testing/testing-guidelines.html
resources/guidelines/testing/store/quality-guidelines-apps/: guides/development/testing/testing-guidelines.html
resources/guidelines/testing/store/quality-guidelines-plugins/#the-way-we-test-apps-based-on-the-plugin-system: guides/development/testing/testing-guidelines.html
resources/guidelines/troubleshooting/index.html: guides/development/troubleshooting/index.html
resources/guidelines/troubleshooting/elasticsearch.html: guides/hosting/infrastructure/elasticsearch/elasticsearch.html
resources/guidelines/troubleshooting/performance.html: guides/hosting/performance/performance.html
resources/guidelines/troubleshooting/phpstan.html: guides/development/troubleshooting/phpstan.html
guides/integrations-api/general-concepts/: guides/development/integrations-api/
guides/integrations-api/general-concepts/api-versioning.html: guides/development/integrations-api/request-headers.html#sw-version-id
guides/integrations-api/general-concepts/request-headers.html: guides/development/integrations-api/request-headers.html
Expand Down Expand Up @@ -205,7 +220,6 @@ redirects:
guides/plugins/plugins/testing/cypress/cypress-best-practises.html: guides/development/testing/legacy/cypress/cypress-best-practises.html
guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing/: guides/development/testing/legacy/cypress/
guides/resources/references/core-reference/dal-reference/filters-reference.html: resources/references/core-reference/dal-reference/filters-reference.html
resources/guidelines/code/core/database-migations.html: resources/guidelines/code/core/database-migrations.html
resources/guidelines/code/core/final-and-internal.html: guides/development/extensions/architecture/final-and-internal.html
resources/guidelines/code/core/internal.html: guides/development/extensions/architecture/internal.html
resources/guidelines/code/core/extendability.html: guides/development/extensions/architecture/extendability.html
Expand Down
2 changes: 1 addition & 1 deletion concepts/framework/data-abstraction-layer.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The DAL is implemented with the specific needs of Shopware in mind and lets deve
Some concepts used by the DAL, like Criteria, may sound familiar to you if you know [Doctrine](https://symfony.com/doc/current/doctrine.html) or other ORMs.
A reference to more in-depth documentation about the DAL can be found below.

Refer to [Shopware 6.6.5.0 entity relationship model](../../../assets/shopware6-erd.pdf) that depicts different tables and their relationships.
Refer to [Shopware 6.6.5.0 entity relationship model](../../assets/shopware6-erd.pdf) that depicts different tables and their relationships.

Alternatively, you can export a fresh ER model, using [MySQL Workbench](https://dev.mysql.com/doc/workbench/en/wb-reverse-engineering.html), [PHPStorm Database Tools](https://www.jetbrains.com/help/phpstorm/creating-diagrams.html), or similar tool.

Expand Down
2 changes: 1 addition & 1 deletion concepts/framework/elasticsearch.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,4 @@ The command `es:test:analyzer` runs an Elasticsearch analyzer on your indices. F

## Customize the Elasticsearch integration

To customize the Elasticsearch integration or add your own fields and entities, refer to the [Elasticsearch extension guide](../../guides/plugins/plugins/elasticsearch/add-product-entity-extension-to-elasticsearch)
To customize the Elasticsearch integration or add your own fields and entities, refer to the [Elasticsearch extension guide](../../guides/plugins/plugins/integrations/elasticsearch/add-product-entity-extension-to-elasticsearch.md)
3 changes: 1 addition & 2 deletions concepts/translations/built-in-translation-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,5 +225,4 @@ configuration details loaded from the `translation.yaml` file.
You can require it via dependency injection and because of the usage of the `TranslationConfigLoader` with lazy loading,
the configuration is always available when needed.

[migration-guide]: ../../resources/references/upgrades/core/translation/language-pack-migration.md
[language-layer-docs]: TODO
More information is available in the [Migration Guide](../../guides/upgrades-migrations/language-pack-migration.md).
4 changes: 2 additions & 2 deletions concepts/translations/fallback-language-selection.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ The command supports several options:

## Implementation guidelines for extension developers

For detailed instructions, see the [Extension Translation Migration](./../../resources/references/upgrades/core/translation/extension-translation) guide. In short:
For detailed instructions, see the [Extension Translation Migration](../../guides/upgrades-migrations/extension-translation.md) guide. In short:

- **Create a complete base file** (`messages.<language>.base.json`) for each supported language.
- **Add patch files only when needed** – keep them minimal.
Expand All @@ -62,4 +62,4 @@ For detailed instructions, see the [Extension Translation Migration](./../../res
## Conclusion

The country-independent snippet layer streamlines translation maintenance by consolidating common strings into a neutral fallback file and isolating regional vocabulary into small patch files.
For further examples, refer to [Built-in Translation Handling](./built-in-translation-system) and [Extension Translation Migration](./../../resources/references/upgrades/core/translation/extension-translation).
For further examples, refer to [Built-in Translation Handling](./built-in-translation-system) and [Extension Translation Migration](../../guides/upgrades-migrations/extension-translation.md).
4 changes: 2 additions & 2 deletions guides/development/accessibility/storefront-accessibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ nav:

# Accessibility in the Storefront

At Shopware, we are committed to creating inclusive and barrier-free shopping experiences for our merchants and their customers.
Shopware is committed to creating inclusive and barrier-free shopping experiences for our merchants and their customers.

## What does Shopware do to ensure accessibility?

* Shopware is committed to fulfilling the [WCAG 2.1 AA](https://www.w3.org/TR/WCAG21/) accessibility guidelines and Barrier-Free Information Technology Regulation (BITV 2.0) in the Storefront.
* You can find more information on [shopware.design](https://shopware.design/foundations/accessibility.html) and [in our blog post](https://www.shopware.com/en/news/accessible-online-store-by-2025/).
* You can find more information on [shopware.design](https://shopware.design/foundations/accessibility.html) and [in our blog post](https://www.shopware.com/en/news/accessible-online-store-by-2025/).
* The Storefront is using [Bootstrap components](https://getbootstrap.com/docs/5.3/getting-started/accessibility/) that already consider good accessibility practices, for example, using aria roles.
* Much of the HTML structure and CSS styling already fulfill accessibility guidelines. However, there are still [open accessibility issues](https://github.com/shopware/shopware/issues?q=state%3Aopen%20label%3Aarea%2Faccessibility) that will be addressed.
* Automated [E2E testing with playwright](https://github.com/shopware/shopware/tree/trunk/tests/acceptance) and axe reporter are used to ensure future accessibility.
Expand Down
4 changes: 3 additions & 1 deletion guides/development/extensions/architecture/extendability.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ This document represents core guidelines and has been mirrored from the core in
Find the original version [here](https://github.com/shopware/shopware/blob/trunk/coding-guidelines/core/extendability.md)
:::

The Extendability of our software and its features is an essential part of development. Enabling external companies, as well as ourselves, to customize our software so it can be adapted to different business cases is the foundation of our software's success.
## Overview

The extendability of our software and its features is an essential part of development. Enabling external companies, as well as ourselves, to customize our software so it can be adapted to different business cases is the foundation of our software's success.

Regarding software extendability, different business cases and requirements must be considered, and we must also build the software architecture accordingly.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ nav:

---

# Final and internal annotation
# Final and Internal Annotation

::: info
This document represents core guidelines and has been mirrored from the core in our Shopware 6 repository.
You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/coding-guidelines/core/final-and-internal.md)
:::

## Overview

We use `@final` and `@internal` annotations to mark classes as final or internal. This allows us to mark services and classes as public or private API and to define which breaking changes can be expected.

## Final
Expand Down
2 changes: 2 additions & 0 deletions guides/development/extensions/architecture/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ nav:

# Extension Architecture

## Overview

This section defines the architectural principles that govern how Shopware can be extended. It describes extension contracts, subsystem boundaries, and public API guarantees that apply to all extension types:

* Plugins
Expand Down
2 changes: 2 additions & 0 deletions guides/development/extensions/architecture/internal.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ This document represents core guidelines and has been mirrored from the core in
You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/coding-guidelines/core/internal.md)
:::

## Overview

All classes and elements (methods, properties, constants) that are defined as protected or public are initially considered part of the Public API for third-party developers.

The Shopware Public API must be kept compatible with each release. This means that the following must not change for third-party developers in a minor release:
Expand Down
13 changes: 7 additions & 6 deletions guides/development/extensions/code-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,19 @@ nav:

## Choose the right extension type

* **Custom project/bundle**: Fit for bespoke installations you fully control. See the [bundle guide](../../plugins/plugins/bundle.md) for the bundle layout and when to embed project-specific logic.
* **Private/custom plugin**: Use the standard plugin skeleton for reusable features across a few projects. Start with the [plugin base guide](../../plugins/plugins/plugin-base-guide.md) and keep project overrides as thin as possible.
* **Store plugin**: Same plugin layout, but hardened for Store review: strict metadata, no project-only hacks, testability, and BC guarantees.
* **Custom project/bundle**: Suitable for bespoke installations you fully control. See the [bundle guide](../../plugins/plugins/bundle.md) for the bundle layout and when to embed project-specific logic.
* **Static plugin**: Project-specific, customized plugins; the recommended option. Use the standard plugin skeleton for reusable features across a few projects. Start with the [plugin base guide](../../plugins/plugins/plugin-base-guide.md) and keep project overrides as thin as possible.
* **Managed plugin**: Same plugin layout, but [hardened for Store review](../../plugins/plugins/index.md#managed-plugins): strict metadata, no project-only hacks, testability, and BC guarantees.
* **App**: Prefer when you cannot host PHP in the shop or need SaaS-style isolation. Follow the [app base guide](../../plugins/apps/app-base-guide.md) for manifest and server structure.
* **Theme**: To customize the visual appearance of the Shopware [Storefront] only. Follow the [theme base guide](../../plugins/themes/theme-base-guide.md) for guidance.

## Project/bundle structure

* Keep domain logic in bundles, not in templates or controllers; expose services via dependency injection (see the [bundle guide](../../plugins/plugins/bundle.md)).
* Keep domain logic in bundles, not in templates or controllers; expose services via dependency injection. Se the [bundle guide](../../plugins/plugins/bundle.md) for further guidance.
Comment thread
lasomethingsomething marked this conversation as resolved.
Outdated
* Use Composer `type: shopware-platform-plugin` or `shopware-bundle` consistently; align namespaces with the bundle name.
* Isolate integration points (events, DAL extensions) behind service classes so upgrades only touch narrow surfaces.

## Plugin structure (custom and Store)
## Plugin structure (static/custom and managed/Store)

* Start from the default plugin skeleton ([plugin base guide](../../plugins/plugins/plugin-base-guide.md)); avoid bespoke auto-loaders or custom entrypoints.
* Keep configuration, migrations, administration, and storefront assets in their default folders; avoid cross-wiring plugins.
Expand All @@ -35,7 +36,7 @@ nav:

## App structure

* Keep the manifest minimal and explicit: permissions, webhooks, actions, and extensions should match the documented entrypoints ([app base guide](../../plugins/apps/app-base-guide.md)).
* Keep the manifest minimal and explicit: permissions, webhooks, actions, and extensions should match the documented entrypoints. See the [app base guide](../../plugins/apps/app-base-guide.md) for further guidance.
* Separate app backend (API/webhook handlers) from UI assets.
* Avoid stateful coupling to shop runtime; design for multi-tenant hosting.

Expand Down
4 changes: 2 additions & 2 deletions guides/development/extensions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ Shopware offers two extension types:
Plugins and apps are installed and activated for the whole Shopware instance.

:::info
Before choosing an extension type, review the recommended [Code structure](code-structure.md). Following the standard structure reduces upgrade friction and prevents long-term maintenance issues.
Before choosing an extension type, review the recommended [Code structure](code-structure.md) to proactively reduce upgrade friction and prevent long-term maintenance issues.
:::

A storefront theme is *not* a separate extension type, but a stripped-down plugin consisting of a customized storefront UI. In Cloud environments, storefront themes are delivered via apps.
A storefront theme is *not* a distinct extension type, but a stripped-down plugin consisting of a customized storefront UI. In Cloud environments, storefront themes are delivered via apps.

## Monetization

Expand Down
2 changes: 1 addition & 1 deletion guides/development/monetization/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ nav:

Shopware provides multiple ways to monetize your extension in the Store. Choose the model that fits your business strategy and target audience.

All monetized extensions must comply with our [quality guidelines](../testing/store/quality-guidelines) and avoid [Common Store Review Errors](./store-review-errors).
All monetized extensions must comply with our [quality guidelines](../testing/store/quality-guidelines) and avoid [Common Store Review Errors](../../development/testing/store/store-review-errors.md).

## Paid extensions

Expand Down
6 changes: 3 additions & 3 deletions guides/development/testing/ci.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
nav:
title: CI
title: Continuous Integration
position: 10

---

# CI
# Continuous Integration

CI should, at a minimum, run static analysis and coding standards checks alongside the project or extension build to keep artifacts reproducible. Add sanity checks, such as smoke tests and lightweight integration tests, to catch regressions early.
Continuous Integration should, at a minimum, run static analysis and coding standards checks alongside the project or extension build to keep artifacts reproducible. Add sanity checks, such as smoke tests and lightweight integration tests, to catch regressions early.

Automated tests — unit, integration, and E2E where feasible — make refactors, upgrades, and dependency changes safer.

Expand Down
2 changes: 1 addition & 1 deletion guides/development/testing/testing-guidelines.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
nav:
title: Testing guidelines for extensions
title: Testing Guidelines for Extensions
position: 10

---
Expand Down
2 changes: 1 addition & 1 deletion guides/development/testing/unit/jest-admin.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
nav:
title: Jest unit tests in Shopware's administration
title: Jest Unit Tests in Shopware's Administration
position: 20

---
Expand Down
2 changes: 1 addition & 1 deletion guides/development/testing/unit/jest-storefront.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
nav:
title: Jest unit tests in Shopware's storefront
title: Jest Unit Tests in Shopware's Storefront
position: 30

---
Expand Down
2 changes: 1 addition & 1 deletion guides/development/testing/unit/php-unit.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ To execute a specific test class or method of a testsuite, pass the argument `--

## Flex template

To run PHPunit tests install the flex template [dev-tools](../../../../guides/installation/template.md#how-do-i-migrate-from-production-template-to-symfony-flex) package via composer.
To run PHPunit tests install the flex template [dev-tools](../../../installation/project-overview.md#project-template) package via Composer.

```shell
composer require --dev dev-tools
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
nav:
title: EnumField reference
title: EnumField Reference
position: 100

---

# EnumField reference
# EnumField Reference

## Usage

The `EnumField` can be used to restrict `string` or `int` values to a fixed set.
The `EnumField` can be used to restrict `string` or `int` values to a fixed set.

Define a `\BackedEnum` class, use them in an Entity and restrict the values in your RDBMS.

Expand Down
Loading
Loading