├── resources ├── references │ ├── adr │ │ ├── index.md │ │ ├── YYYY-MM-DD-template.md │ │ ├── 2022-11-21-replace-drop-shadow-with-box-shadow.md │ │ ├── 2022-11-16-deprecate-csrf.md │ │ ├── 2023-01-16-npm-packages-pre-release-versions.md │ │ ├── 2020-09-08-custom-field-label-loading-in-storefront.md │ │ ├── 2022-09-28-mapping-of-product-area.md │ │ ├── 2022-11-25-run-lighthouse-test-ine2e-env.md │ │ ├── 2020-11-06-creating-events.md │ │ ├── 2021-11-23-add-possibility-for-plugin-to-add-a-html-file.md │ │ └── 2022-05-12-remove-static-analysis-with-psalm.md │ ├── config-reference │ │ ├── index.md │ │ └── server │ │ │ ├── index.md │ │ │ ├── caddy.md │ │ │ └── apache.md │ ├── upgrades │ │ ├── administration │ │ │ └── index.md │ │ ├── core │ │ │ ├── index.md │ │ │ └── translation │ │ │ │ └── index.md │ │ └── index.md │ ├── administration-reference │ │ ├── index.md │ │ └── directives.md │ ├── core-reference │ │ ├── dal-reference │ │ │ └── index.md │ │ ├── index.md │ │ └── actions-reference.md │ ├── testing-reference │ │ ├── index.md │ │ └── e2e-commands.md │ ├── storefront-reference │ │ └── index.md │ ├── app-reference │ │ ├── script-reference │ │ │ └── index.md │ │ └── index.md │ ├── index.md │ └── api-reference │ │ └── index.md ├── guidelines │ ├── code │ │ ├── core │ │ │ └── index.md │ │ ├── session-and-state.md │ │ ├── routing.md │ │ ├── index.md │ │ ├── dependency-injection-dependency-handling.md │ │ ├── context-rules-rule-systems.md │ │ ├── events.md │ │ ├── document-code.md │ │ ├── platform-domains.md │ │ ├── public-apis.md │ │ ├── store-api.md │ │ ├── cart-process.md │ │ └── pageloader.md │ ├── documentation-guidelines │ │ ├── 04-fonts-and-formats │ │ │ └── index.md │ │ └── index.md │ ├── troubleshooting │ │ └── index.md │ ├── testing │ │ └── index.md │ └── index.md └── tooling │ ├── cli │ └── index.md │ ├── ide │ └── index.md │ └── index.md ├── products ├── extensions │ ├── migration-assistant │ │ ├── guides.md │ │ ├── guides │ │ │ └── index.md │ │ └── index.md │ ├── b2b-suite │ │ ├── guides │ │ │ ├── example-plugins │ │ │ │ ├── B2bAcl.zip │ │ │ │ ├── B2bAuth.zip │ │ │ │ ├── B2bLogin.zip │ │ │ │ ├── B2bRestApi.zip │ │ │ │ ├── B2bAjaxPanel.zip │ │ │ │ ├── B2bAuditLog.zip │ │ │ │ ├── B2bServiceExtension.zip │ │ │ │ └── B2bTemplateExtension.zip │ │ │ ├── index.md │ │ │ ├── administration │ │ │ │ └── index.md │ │ │ ├── storefront │ │ │ │ ├── index.md │ │ │ │ └── product-search.md │ │ │ └── core │ │ │ │ ├── index.md │ │ │ │ └── store-api.md │ │ ├── concept │ │ │ └── index.md │ │ └── index.md │ ├── subscriptions │ │ ├── guides │ │ │ └── index.md │ │ └── index.md │ ├── b2b-suite-migration │ │ ├── references │ │ │ └── index.md │ │ ├── execution │ │ │ ├── index.md │ │ │ └── prerequisites.md │ │ ├── development │ │ │ ├── index.md │ │ │ └── validation-and-run.md │ │ ├── concept │ │ │ └── migration-table.md │ │ └── index.md │ ├── b2b-components │ │ ├── employee-management │ │ │ ├── concepts │ │ │ │ └── index.md │ │ │ └── guides │ │ │ │ ├── b2b-roles.md │ │ │ │ └── creating-own-permissions-via-app.md │ │ ├── order-approval │ │ │ └── index.md │ │ ├── organization-unit │ │ │ ├── index.md │ │ │ └── guides │ │ │ │ └── how-to-identify-organization-from-context.md │ │ ├── shopping-lists │ │ │ ├── index.md │ │ │ └── concepts │ │ │ │ └── entities-and-schema.md │ │ └── quotes-management │ │ │ └── index.md │ ├── index.md │ └── advanced-search │ │ ├── installation.md │ │ ├── index.md │ │ ├── Search-and-suggest-routes.md │ │ └── How-to-configure-searchable-fields.md ├── digital-sales-rooms │ ├── best-practices │ │ ├── index.md │ │ ├── saas │ │ │ └── index.md │ │ └── app-deployment │ │ │ └── index.md │ ├── configuration │ │ ├── index.md │ │ ├── plugin-config.md │ │ ├── config-with-cli.md │ │ └── domain-config.md │ ├── setup-3rd-party │ │ ├── index.md │ │ └── realtime-video-dailyco.md │ ├── installation │ │ └── index.md │ └── customization │ │ ├── index.md │ │ ├── branding.md │ │ └── i18n.md ├── paas │ ├── shopware │ │ ├── fundamentals │ │ │ ├── index.md │ │ │ └── project.md │ │ ├── resources │ │ │ ├── index.md │ │ │ ├── object-storage.md │ │ │ └── databases.md │ │ ├── get-started │ │ │ └── index.md │ │ ├── guides │ │ │ └── index.md │ │ └── monitoring │ │ │ ├── index.md │ │ │ ├── logs.md │ │ │ └── traces.md │ ├── shopware-paas │ │ ├── rabbitmq.md │ │ ├── cli-setup.md │ │ ├── fastly.md │ │ ├── composable-frontends │ │ │ └── blackfire.md │ │ └── elasticsearch.md │ └── index.md ├── saas.md ├── sales-agent │ ├── testing.md │ ├── deployment.md │ └── customization │ │ └── index.md └── cli │ ├── extension-commands │ └── extract-meta-data.md │ └── shopware-account-commands │ ├── authentication.md │ └── configure-composer-repository.md ├── .gitpod.yml ├── snippets ├── config │ ├── stock.sh │ ├── product_stream.yaml │ ├── html_sanitizer_disabled.yaml │ ├── app │ │ ├── allowed-hosts.xml │ │ ├── storefront.xml │ │ ├── webhooks.xml │ │ ├── setup.xml │ │ ├── full-permissions.xml │ │ ├── permissions.xml │ │ ├── cookies.xml │ │ ├── custom-fields-simple.xml │ │ ├── tax.xml │ │ ├── shipping-methods.xml │ │ └── cookies-group.xml │ ├── stock_disabled.yaml │ ├── html_sanitizer.yaml │ └── monolog.yaml ├── guide │ ├── debugging_scheduled_tasks.md │ └── app_database_setup.md └── mermaid-diagrams │ └── checkout-orderState.mermaid ├── assets ├── k6-cloud.png ├── cart-struct.png ├── k6-dashboard.png ├── readme-splash.png ├── shopware6-erd.pdf ├── theme-config.png ├── 10-mac-os-x-net.png ├── 10-mac-os-x-php.png ├── custom-buttons.png ├── developer-docs.png ├── flow-builder-tag.png ├── fork-repository.png ├── permissions-gui.png ├── profiler-events.png ├── sales-agent-item.png ├── 10-mac-os-x-mysql.png ├── app-rule-condition.png ├── availability-field.png ├── availability-route.png ├── blackfire-profile.png ├── concept-categories.png ├── flow-builder-demo.gif ├── otel-grafana-trace.png ├── script-debug-dump.png ├── shopware-toolbox-1.png ├── shopware-toolbox-2.png ├── b2b-feature-toggles.png ├── flow-builder-action.png ├── github-label-accepted.png ├── github-label-declined.png ├── github-label-feature.png ├── otel-grafana-explore.png ├── sales-agent-overview.jpg ├── script-debug-detail.png ├── script-debug-toolbar.png ├── adr │ ├── message_queue_stats.png │ ├── tideways_benchmark.png │ ├── payment-flow │ │ ├── pre-created-payment.png │ │ ├── synchronous-payment.png │ │ └── asynchronous-payment.png │ ├── native-block-system │ │ └── native_block_system.png │ └── content-management │ │ └── example-cms-aware-admin-menu.png ├── approval-rule-condition.png ├── flow-builder-tag-result.png ├── github-label-incomplete.png ├── github-label-quickpick.png ├── github-label-scheduled.png ├── product-search-options.png ├── additionalPermissions-gui.png ├── extension-api-notification.png ├── flow-builder-action-error.png ├── flow-builder-action-then.png ├── flow-builder-trigger-drop.png ├── flow-builder-triggers-list.png ├── github-label-missing-tests.png ├── github-label-refactoring.png ├── otel-grafana-explore-trace.png ├── products-digitalSalesRooms.png ├── sales-agent-architecture.jpg ├── example-multi-select-config.png ├── example-single-select-config.png ├── extension-api-communication.png ├── flow-builder-action-no-label.png ├── flow-builder-trigger-action.png ├── guidelines-test-store-plugin.png ├── fill-domain-into-configuration.png ├── flow-builder-app-action-preview.png ├── rule-restrictions-rule-builder.png ├── flow-builder-action-sevices-list.png ├── add-cms-element-via-admin-sdk-config.png ├── add-rule-assignment-configuration-0.png ├── flow-builder-action-customer-group.png ├── flow-builder-custom-trigger-preview.png ├── guidelines-test-store-apiValidation.png ├── products-digitalSalesRooms-display.png ├── products-digitalSalesRooms-wildcard.png ├── setup-domain-for-sales-channel-DSR.png ├── add-cms-element-via-admin-sdk-element.png ├── add-cms-element-via-admin-sdk-preview.png ├── boostday-announcement-banner-september.png ├── products-digitalSalesRooms-videoConfig.png ├── typescript-declaration-shopware-module.gif ├── flow-builder-action-available-all-events.png ├── products-digitalSalesRooms-configuration.png ├── products-digitalSalesRooms-extensionsMenu.png ├── products-digitalSalesRooms-mercureConfig.png ├── approval-rule-condition-text-field-example.png ├── products-digitalSalesRooms-installExtension.png ├── products-digitalSalesRooms-uploadExtension.png ├── approval-rule-condition-multi-select-example.png ├── approval-rule-condition-single-select-example.png ├── xquartz-allow-connections-from-network-clients.png ├── products-digitalSalesRooms-mercureConfigExample.png ├── products-digitalSalesRooms-mercureConfiguration.png └── products-digitalSalesRooms-swagExtensionInstall.png ├── .vscode └── settings.json ├── .envrc ├── devenv.nix ├── .github ├── dependabot.yml ├── release.yml ├── workflows │ ├── spellcheck.yml │ ├── file-format-check.yml │ ├── reviewdog.yml │ ├── markdown-style-check.yml │ ├── release-note.yml │ ├── wordlist.yml │ ├── watcher.yml │ └── validate-external-links.yml └── scripts │ ├── update-code-guidelines.sh │ ├── update-adrs.sh │ └── check-redirects.sh ├── guides ├── hosting │ ├── index.md │ ├── configurations │ │ ├── shopware │ │ │ └── index.md │ │ ├── framework │ │ │ ├── index.md │ │ │ └── samesite-protection.md │ │ └── index.md │ ├── installation-updates │ │ ├── index.md │ │ └── deployments │ │ │ └── index.md │ ├── infrastructure │ │ ├── index.md │ │ └── elasticsearch │ │ │ └── index.md │ └── performance │ │ └── index.md ├── plugins │ ├── plugins │ │ ├── testing │ │ │ ├── cypress │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ └── playwright │ │ │ │ └── index.md │ │ ├── framework │ │ │ ├── extension │ │ │ │ └── index.md │ │ │ ├── message-queue │ │ │ │ └── index.md │ │ │ ├── store-api │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ ├── rate-limiter │ │ │ │ └── index.md │ │ │ ├── data-handling │ │ │ │ └── index.md │ │ │ ├── flow │ │ │ │ └── index.md │ │ │ ├── rule │ │ │ │ └── index.md │ │ │ ├── filesystem │ │ │ │ └── index.md │ │ │ ├── event │ │ │ │ └── index.md │ │ │ └── custom-field │ │ │ │ └── index.md │ │ ├── checkout │ │ │ ├── document │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ ├── order │ │ │ │ └── index.md │ │ │ ├── cart │ │ │ │ └── index.md │ │ │ └── payment │ │ │ │ └── index.md │ │ ├── elasticsearch │ │ │ └── index.md │ │ ├── content │ │ │ ├── media │ │ │ │ └── index.md │ │ │ ├── index.md │ │ │ ├── stock │ │ │ │ └── index.md │ │ │ ├── mail │ │ │ │ └── index.md │ │ │ ├── sitemap │ │ │ │ ├── remove-sitemap-entries.md │ │ │ │ └── index.md │ │ │ ├── seo │ │ │ │ └── index.md │ │ │ └── cms │ │ │ │ └── index.md │ │ ├── api │ │ │ └── index.md │ │ ├── plugin-fundamentals │ │ │ └── index.md │ │ ├── storefront │ │ │ └── index.md │ │ └── administration │ │ │ ├── index.md │ │ │ └── advanced-configuration │ │ │ └── extending-webpack.md │ ├── apps │ │ ├── app-sdks │ │ │ ├── index.md │ │ │ ├── javascript │ │ │ │ ├── index.md │ │ │ │ └── 04-signing.md │ │ │ └── php │ │ │ │ ├── 04-signing.md │ │ │ │ └── 06-events.md │ │ ├── starter │ │ │ └── index.md │ │ ├── content │ │ │ ├── index.md │ │ │ └── cms │ │ │ │ └── index.md │ │ ├── custom-data │ │ │ └── index.md │ │ ├── flow-builder │ │ │ └── index.md │ │ ├── rule-builder │ │ │ └── index.md │ │ ├── administration │ │ │ ├── index.md │ │ │ └── adding-snippets.md │ │ └── gateways │ │ │ └── checkout │ │ │ └── command-reference.md │ └── themes │ │ ├── add-assets-to-theme.md.rej │ │ ├── index.md │ │ └── theme-base-guide.md └── integrations-api │ └── general-concepts │ └── index.md ├── .gitignore ├── concepts ├── translations │ └── index.md ├── framework │ ├── architecture │ │ └── index.md │ ├── index.md │ └── migrations.md ├── api │ ├── admin-api.md │ └── index.md ├── commerce │ ├── catalog │ │ └── index.md │ ├── checkout-concept │ │ └── index.md │ ├── index.md │ └── content │ │ └── index.md └── extensions │ └── plugins-concept.md ├── .editorconfig ├── package.json ├── .lycheeignore ├── .spellcheck.yml └── index.md /resources/references/adr/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/guidelines/code/core/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /products/extensions/migration-assistant/guides.md: -------------------------------------------------------------------------------- 1 | # Guides 2 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | vscode: 2 | extensions: 3 | - valentjn.vscode-ltex 4 | -------------------------------------------------------------------------------- /snippets/config/stock.sh: -------------------------------------------------------------------------------- 1 | // /.env 2 | STOCK_HANDLING=1 3 | -------------------------------------------------------------------------------- /assets/k6-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/k6-cloud.png -------------------------------------------------------------------------------- /assets/cart-struct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/cart-struct.png -------------------------------------------------------------------------------- /snippets/config/product_stream.yaml: -------------------------------------------------------------------------------- 1 | shopware: 2 | product_stream: 3 | indexing: false -------------------------------------------------------------------------------- /assets/k6-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/k6-dashboard.png -------------------------------------------------------------------------------- /assets/readme-splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/readme-splash.png -------------------------------------------------------------------------------- /assets/shopware6-erd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/shopware6-erd.pdf -------------------------------------------------------------------------------- /assets/theme-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/theme-config.png -------------------------------------------------------------------------------- /assets/10-mac-os-x-net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/10-mac-os-x-net.png -------------------------------------------------------------------------------- /assets/10-mac-os-x-php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/10-mac-os-x-php.png -------------------------------------------------------------------------------- /assets/custom-buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/custom-buttons.png -------------------------------------------------------------------------------- /assets/developer-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/developer-docs.png -------------------------------------------------------------------------------- /assets/flow-builder-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-tag.png -------------------------------------------------------------------------------- /assets/fork-repository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/fork-repository.png -------------------------------------------------------------------------------- /assets/permissions-gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/permissions-gui.png -------------------------------------------------------------------------------- /assets/profiler-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/profiler-events.png -------------------------------------------------------------------------------- /assets/sales-agent-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/sales-agent-item.png -------------------------------------------------------------------------------- /snippets/config/html_sanitizer_disabled.yaml: -------------------------------------------------------------------------------- 1 | shopware: 2 | html_sanitizer: 3 | enabled: false 4 | -------------------------------------------------------------------------------- /assets/10-mac-os-x-mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/10-mac-os-x-mysql.png -------------------------------------------------------------------------------- /assets/app-rule-condition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/app-rule-condition.png -------------------------------------------------------------------------------- /assets/availability-field.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/availability-field.png -------------------------------------------------------------------------------- /assets/availability-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/availability-route.png -------------------------------------------------------------------------------- /assets/blackfire-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/blackfire-profile.png -------------------------------------------------------------------------------- /assets/concept-categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/concept-categories.png -------------------------------------------------------------------------------- /assets/flow-builder-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-demo.gif -------------------------------------------------------------------------------- /assets/otel-grafana-trace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/otel-grafana-trace.png -------------------------------------------------------------------------------- /assets/script-debug-dump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/script-debug-dump.png -------------------------------------------------------------------------------- /assets/shopware-toolbox-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/shopware-toolbox-1.png -------------------------------------------------------------------------------- /assets/shopware-toolbox-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/shopware-toolbox-2.png -------------------------------------------------------------------------------- /assets/b2b-feature-toggles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/b2b-feature-toggles.png -------------------------------------------------------------------------------- /assets/flow-builder-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action.png -------------------------------------------------------------------------------- /assets/github-label-accepted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-accepted.png -------------------------------------------------------------------------------- /assets/github-label-declined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-declined.png -------------------------------------------------------------------------------- /assets/github-label-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-feature.png -------------------------------------------------------------------------------- /assets/otel-grafana-explore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/otel-grafana-explore.png -------------------------------------------------------------------------------- /assets/sales-agent-overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/sales-agent-overview.jpg -------------------------------------------------------------------------------- /assets/script-debug-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/script-debug-detail.png -------------------------------------------------------------------------------- /assets/script-debug-toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/script-debug-toolbar.png -------------------------------------------------------------------------------- /resources/tooling/cli/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: CLI 4 | position: 10 5 | 6 | --- 7 | 8 | # CLI 9 | -------------------------------------------------------------------------------- /resources/tooling/ide/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: IDE 4 | position: 20 5 | 6 | --- 7 | 8 | # IDE 9 | -------------------------------------------------------------------------------- /snippets/config/app/allowed-hosts.xml: -------------------------------------------------------------------------------- 1 | 2 | example.com 3 | 4 | -------------------------------------------------------------------------------- /assets/adr/message_queue_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/message_queue_stats.png -------------------------------------------------------------------------------- /assets/adr/tideways_benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/tideways_benchmark.png -------------------------------------------------------------------------------- /assets/approval-rule-condition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/approval-rule-condition.png -------------------------------------------------------------------------------- /assets/flow-builder-tag-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-tag-result.png -------------------------------------------------------------------------------- /assets/github-label-incomplete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-incomplete.png -------------------------------------------------------------------------------- /assets/github-label-quickpick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-quickpick.png -------------------------------------------------------------------------------- /assets/github-label-scheduled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-scheduled.png -------------------------------------------------------------------------------- /assets/product-search-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/product-search-options.png -------------------------------------------------------------------------------- /resources/tooling/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Tooling 4 | position: 30 5 | 6 | --- 7 | 8 | # Tooling 9 | -------------------------------------------------------------------------------- /assets/additionalPermissions-gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/additionalPermissions-gui.png -------------------------------------------------------------------------------- /assets/extension-api-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/extension-api-notification.png -------------------------------------------------------------------------------- /assets/flow-builder-action-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-error.png -------------------------------------------------------------------------------- /assets/flow-builder-action-then.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-then.png -------------------------------------------------------------------------------- /assets/flow-builder-trigger-drop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-trigger-drop.png -------------------------------------------------------------------------------- /assets/flow-builder-triggers-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-triggers-list.png -------------------------------------------------------------------------------- /assets/github-label-missing-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-missing-tests.png -------------------------------------------------------------------------------- /assets/github-label-refactoring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/github-label-refactoring.png -------------------------------------------------------------------------------- /assets/otel-grafana-explore-trace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/otel-grafana-explore-trace.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms.png -------------------------------------------------------------------------------- /assets/sales-agent-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/sales-agent-architecture.jpg -------------------------------------------------------------------------------- /assets/example-multi-select-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/example-multi-select-config.png -------------------------------------------------------------------------------- /assets/example-single-select-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/example-single-select-config.png -------------------------------------------------------------------------------- /assets/extension-api-communication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/extension-api-communication.png -------------------------------------------------------------------------------- /assets/flow-builder-action-no-label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-no-label.png -------------------------------------------------------------------------------- /assets/flow-builder-trigger-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-trigger-action.png -------------------------------------------------------------------------------- /assets/guidelines-test-store-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/guidelines-test-store-plugin.png -------------------------------------------------------------------------------- /assets/fill-domain-into-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/fill-domain-into-configuration.png -------------------------------------------------------------------------------- /assets/flow-builder-app-action-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-app-action-preview.png -------------------------------------------------------------------------------- /assets/rule-restrictions-rule-builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/rule-restrictions-rule-builder.png -------------------------------------------------------------------------------- /products/digital-sales-rooms/best-practices/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Best practices 4 | position: 50 5 | 6 | --- 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "editor.insertSpaces": true, 4 | "editor.detectIndentation": false 5 | } 6 | -------------------------------------------------------------------------------- /assets/flow-builder-action-sevices-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-sevices-list.png -------------------------------------------------------------------------------- /resources/references/config-reference/index.md: -------------------------------------------------------------------------------- 1 | # Config Reference 2 | 3 | This section gives you a reference on server configuration. 4 | -------------------------------------------------------------------------------- /resources/references/config-reference/server/index.md: -------------------------------------------------------------------------------- 1 | # Server 2 | 3 | This section gives you a reference on server configuration. 4 | -------------------------------------------------------------------------------- /assets/add-cms-element-via-admin-sdk-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/add-cms-element-via-admin-sdk-config.png -------------------------------------------------------------------------------- /assets/add-rule-assignment-configuration-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/add-rule-assignment-configuration-0.png -------------------------------------------------------------------------------- /assets/adr/payment-flow/pre-created-payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/payment-flow/pre-created-payment.png -------------------------------------------------------------------------------- /assets/adr/payment-flow/synchronous-payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/payment-flow/synchronous-payment.png -------------------------------------------------------------------------------- /assets/flow-builder-action-customer-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-customer-group.png -------------------------------------------------------------------------------- /assets/flow-builder-custom-trigger-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-custom-trigger-preview.png -------------------------------------------------------------------------------- /assets/guidelines-test-store-apiValidation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/guidelines-test-store-apiValidation.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-display.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-wildcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-wildcard.png -------------------------------------------------------------------------------- /assets/setup-domain-for-sales-channel-DSR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/setup-domain-for-sales-channel-DSR.png -------------------------------------------------------------------------------- /assets/add-cms-element-via-admin-sdk-element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/add-cms-element-via-admin-sdk-element.png -------------------------------------------------------------------------------- /assets/add-cms-element-via-admin-sdk-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/add-cms-element-via-admin-sdk-preview.png -------------------------------------------------------------------------------- /assets/adr/payment-flow/asynchronous-payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/payment-flow/asynchronous-payment.png -------------------------------------------------------------------------------- /assets/boostday-announcement-banner-september.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/boostday-announcement-banner-september.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-videoConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-videoConfig.png -------------------------------------------------------------------------------- /assets/typescript-declaration-shopware-module.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/typescript-declaration-shopware-module.gif -------------------------------------------------------------------------------- /assets/flow-builder-action-available-all-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/flow-builder-action-available-all-events.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-configuration.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-extensionsMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-extensionsMenu.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-mercureConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-mercureConfig.png -------------------------------------------------------------------------------- /snippets/config/stock_disabled.yaml: -------------------------------------------------------------------------------- 1 | # /config/packages/shopware.yaml 2 | shopware: 3 | stock: 4 | enable_stock_management: false 5 | -------------------------------------------------------------------------------- /assets/adr/native-block-system/native_block_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/native-block-system/native_block_system.png -------------------------------------------------------------------------------- /assets/approval-rule-condition-text-field-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/approval-rule-condition-text-field-example.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-installExtension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-installExtension.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-uploadExtension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-uploadExtension.png -------------------------------------------------------------------------------- /assets/approval-rule-condition-multi-select-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/approval-rule-condition-multi-select-example.png -------------------------------------------------------------------------------- /assets/approval-rule-condition-single-select-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/approval-rule-condition-single-select-example.png -------------------------------------------------------------------------------- /assets/xquartz-allow-connections-from-network-clients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/xquartz-allow-connections-from-network-clients.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-mercureConfigExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-mercureConfigExample.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-mercureConfiguration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-mercureConfiguration.png -------------------------------------------------------------------------------- /assets/products-digitalSalesRooms-swagExtensionInstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/products-digitalSalesRooms-swagExtensionInstall.png -------------------------------------------------------------------------------- /assets/adr/content-management/example-cms-aware-admin-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/assets/adr/content-management/example-cms-aware-admin-menu.png -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bAcl.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bAcl.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bAuth.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bAuth.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bLogin.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bLogin.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bRestApi.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bRestApi.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bAjaxPanel.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bAjaxPanel.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bAuditLog.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bAuditLog.zip -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | source_url "https://raw.githubusercontent.com/cachix/devenv/d1f7b48e35e6dee421cfd0f51481d17f77586997/direnvrc" "sha256-YBzqskFZxmNb3kYVoKD9ZixoPXJh1C9ZvTLGFRkauZ0=" 2 | 3 | use devenv 4 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bServiceExtension.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bServiceExtension.zip -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/example-plugins/B2bTemplateExtension.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopware/docs/HEAD/products/extensions/b2b-suite/guides/example-plugins/B2bTemplateExtension.zip -------------------------------------------------------------------------------- /devenv.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, ... }: 2 | 3 | { 4 | languages.javascript.enable = true; 5 | languages.javascript.package = pkgs.nodejs-18_x; 6 | languages.javascript.pnpm.enable = true; 7 | } 8 | -------------------------------------------------------------------------------- /products/paas/shopware/fundamentals/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Fundamentals 4 | position: 20 5 | --- 6 | 7 | # Fundamentals 8 | 9 | This section will introduce the fundamental pieces of Shopware PaaS Native. 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "npm" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | groups: 8 | all-dependencies: 9 | patterns: 10 | - "*" -------------------------------------------------------------------------------- /resources/references/upgrades/administration/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Administration 4 | position: 10 5 | 6 | --- 7 | 8 | # Administration 9 | 10 | This section contains all upgrade guides related to the Shopware Administration. 11 | -------------------------------------------------------------------------------- /resources/references/administration-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Administration Reference 4 | position: 50 5 | 6 | --- 7 | 8 | # Administration Reference 9 | 10 | This section covers concepts on Utils, Mixins and Directives. 11 | -------------------------------------------------------------------------------- /resources/references/upgrades/core/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Core 4 | position: 20 5 | 6 | --- 7 | 8 | # Core upgrade and migration guides 9 | 10 | This section contains all upgrade and migration guides related to the Shopware Core. 11 | -------------------------------------------------------------------------------- /products/paas/shopware/resources/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Resources 4 | position: 30 5 | --- 6 | 7 | # Resources 8 | 9 | This section guides you through the resources that support your application, such as the database and object storage. 10 | -------------------------------------------------------------------------------- /resources/guidelines/documentation-guidelines/04-fonts-and-formats/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Fonts & Formats 4 | position: 10 5 | 6 | --- 7 | 8 | # Fonts and Formats 9 | 10 | This section explains how to format text and code in sentences. 11 | -------------------------------------------------------------------------------- /resources/guidelines/troubleshooting/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Troubleshooting 4 | position: 10 5 | 6 | --- 7 | 8 | # Troubleshooting 9 | 10 | Use this section to diagnose and resolve common issues you might encounter while working with Shopware projects. 11 | -------------------------------------------------------------------------------- /guides/hosting/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Hosting 4 | position: 30 5 | 6 | --- 7 | 8 | # Hosting 9 | 10 | Setting up an operating environment for Shopware can be hard, but it doesn't have to be if you follow some general guidelines in the subsequent sections. 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /dictionary.dic 3 | .DS_Store 4 | /node_modules/ 5 | 6 | # VSCode-Project 7 | /.vscode/ 8 | !/.vscode/settings.json 9 | .vscode 10 | 11 | # devenv 12 | /.devenv/ 13 | /.direnv/ 14 | .devenv.flake.nix 15 | 16 | # AI 17 | CLAUDE.md 18 | .cursor/ 19 | .venv-spellcheck 20 | -------------------------------------------------------------------------------- /resources/guidelines/testing/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Test 4 | position: 30 5 | 6 | --- 7 | 8 | # Testing 9 | 10 | Testing ensures software reliability, quality, and optimum performance. Detailed E2E testing and quality guidelines are described in the following sections. 11 | -------------------------------------------------------------------------------- /guides/hosting/configurations/shopware/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Shopware 4 | position: 10 5 | 6 | --- 7 | 8 | # Shopware configurations 9 | 10 | ## Overview 11 | 12 | The following section guides you on the security, performance or structural configurations specific to Shopware 6. 13 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Guides 4 | position: 20 5 | 6 | --- 7 | 8 | # Guides 9 | 10 | This section will explore the B2B Suite installation process and the essential components - Core, Storefront, and Administration required for B2B operations. 11 | -------------------------------------------------------------------------------- /resources/references/core-reference/dal-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: DAL Reference 4 | position: 10 5 | 6 | --- 7 | 8 | # DAL Reference 9 | 10 | The DAL reference documents fields, flags, filters, and aggregations for effective data management and querying within the platform. 11 | -------------------------------------------------------------------------------- /guides/hosting/installation-updates/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Installation & Updates 4 | position: 10 5 | 6 | --- 7 | 8 | # Installation and Updates 9 | 10 | This section will brief you on cluster setup for custom stores, Shopware 6 production template, and deployment to an infrastructure. 11 | -------------------------------------------------------------------------------- /products/extensions/migration-assistant/guides/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Guides 4 | position: 20 5 | 6 | --- 7 | 8 | # Guides 9 | 10 | This section guides you on how to migrate from different environments by using a Migration Assistant converter, migration profile, or migration connector. 11 | -------------------------------------------------------------------------------- /concepts/translations/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Translations 4 | position: 50 5 | 6 | --- 7 | 8 | # Translations 9 | 10 | Shopware 6 is a multilingual platform that supports multiple languages and locales. This section provides an overview of 11 | how translations are managed in Shopware 6. 12 | -------------------------------------------------------------------------------- /concepts/framework/architecture/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Architecture 4 | position: 10 5 | 6 | --- 7 | 8 | # Architecture 9 | 10 | On a high level, Shopware consists of multiple modules that separate the entire code base into logical units. Some modules are independent, and some depend on others. 11 | -------------------------------------------------------------------------------- /resources/references/upgrades/core/translation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Translation 4 | position: 10 5 | 6 | --- 7 | 8 | # Update And Migration Guides For Translations In The Shopware Core 9 | 10 | This section contains all upgrade and migration guides related to translations in the Shopware Core. 11 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/configuration/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Configuration 4 | position: 30 5 | 6 | --- 7 | 8 | # Digital Sales Rooms Configuration 9 | 10 | This section will show how to configure *Digital Sales Rooms* plugin. The following sections will give you a detailed procedure of configuration. 11 | -------------------------------------------------------------------------------- /products/extensions/subscriptions/guides/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Guides 4 | position: 20 5 | 6 | --- 7 | 8 | # Guides 9 | 10 | This section will help with common topics regarding the usage of subscriptions. 11 | 12 | Please familiarize yourself with the [concept](../concept.md) first before continuing. 13 | -------------------------------------------------------------------------------- /guides/hosting/installation-updates/deployments/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Deployments 4 | position: 10 5 | 6 | --- 7 | 8 | # Deployments 9 | 10 | The following guide explains the fundamental steps to deploy Shopware 6 to a specific infrastructure and how to build assets for Shopware's Administration and Storefront without a database. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/testing/cypress/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Cypress End-to-end testing 4 | position: 10 5 | 6 | --- 7 | 8 | # Cypress End-to-end testing 9 | 10 | :::warning 11 | Cypress will be deprecated in the future and is no longer maintained. We recommend using [Playwright](../playwright/index.md) for new projects. 12 | ::: 13 | -------------------------------------------------------------------------------- /products/saas.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: SaaS 4 | position: 10 5 | 6 | --- 7 | 8 | # Cloud 9 | 10 | With the SaaS platform, Shopware provides updates, hosting, and infrastructure. Also, there are ways to extend it. 11 | 12 | The [App system](../concepts/extensions/apps-concept) gives you great freedom to develop extensions for SaaS stores. 13 | -------------------------------------------------------------------------------- /snippets/config/html_sanitizer.yaml: -------------------------------------------------------------------------------- 1 | shopware: 2 | html_sanitizer: 3 | sets: 4 | - name: basic 5 | tags: [ "img" ] 6 | attributes: [ "src", "alt", "style" ] 7 | options: 8 | - key: HTML.Trusted 9 | value: true 10 | - key: CSS.Trusted 11 | value: true 12 | -------------------------------------------------------------------------------- /concepts/api/admin-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Admin API 4 | position: 20 5 | 6 | --- 7 | 8 | # Admin API 9 | 10 | The Admin API provides CRUD operations for every entity within Shopware and is used to build integrations with external systems. 11 | 12 | For more information, refer to the [Guides section](../../guides/integrations-api/index.md). 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/extension/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Extension Points 4 | position: 40 5 | 6 | --- 7 | 8 | # Extension Points 9 | 10 | Extension Points allow you to **replace core functionality** by intercepting and modifying the execution flow of system processes, unlike traditional events which are only for notifications. 11 | -------------------------------------------------------------------------------- /resources/references/upgrades/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Upgrades and Migrations 4 | position: 50 5 | 6 | --- 7 | 8 | # Upgrades and Migrations 9 | 10 | Software projects typically undergo changes and upgrades, for Shopware this is not different. 11 | This section provides you with comprehensive update guides for specific technical changes. 12 | -------------------------------------------------------------------------------- /concepts/commerce/catalog/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Catalog 4 | position: 10 5 | 6 | --- 7 | 8 | # Catalog 9 | 10 | In this section, we will go through the structure that organizes products, prices and everything related to maintaining a **product catalog** within the store. 11 | 12 | First, let us understand about products and how they are defined. 13 | -------------------------------------------------------------------------------- /products/paas/shopware/get-started/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Get Started 4 | position: 10 5 | --- 6 | 7 | # Get Started with Shopware PaaS Native 8 | 9 | This section will introduce how to get started with Shopware PaaS Native, including setting up the CLI, preparing your code base, and providing a step-by-step guide to creating your first application. 10 | -------------------------------------------------------------------------------- /resources/guidelines/documentation-guidelines/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Document 4 | position: 40 5 | 6 | --- 7 | 8 | # Documentation Guidelines 9 | 10 | As a contributor, you should refer to this section on how to write articles, the language usage, font and formats to be followed, etc. This section also details the step-by-step documentation process. 11 | -------------------------------------------------------------------------------- /guides/hosting/configurations/framework/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Framework 4 | position: 20 5 | 6 | --- 7 | 8 | # Framework configurations 9 | 10 | ## Overview 11 | 12 | Framework configurations are originated in the [Symfony FrameworkBundle](https://symfony.com/doc/current/reference/configuration/framework.html) and are partially documented in this guide. 13 | -------------------------------------------------------------------------------- /resources/references/testing-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Testing Reference 4 | position: 70 5 | 6 | --- 7 | 8 | # Testing Reference 9 | 10 | In this reference, all Shopware commands provided by [E2E-testsuite-platform](https://github.com/shopware/e2e-testsuite-platform) or [Shopware Platform](https://github.com/shopware/shopware) are listed here. 11 | -------------------------------------------------------------------------------- /concepts/framework/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Framework 4 | position: 20 5 | 6 | --- 7 | 8 | # Framework 9 | 10 | Shopware 6 is not only an ecommerce platform but also a **framework** for developing highly customized shop infrastructures. This section will introduce some of the core concepts that will help you fully understand and leverage Shopware 6's capabilities. 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Shopware platform editor configuration normalization 2 | # http://editorconfig.org/ 3 | 4 | # This is the top-most .editorconfig file; do not search in parent directories. 5 | root = true 6 | 7 | # All files. 8 | [*] 9 | end_of_line = lf 10 | indent_style = space 11 | indent_size = 2 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | -------------------------------------------------------------------------------- /guides/plugins/plugins/checkout/document/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Document 4 | position: 20 5 | 6 | --- 7 | 8 | # Document 9 | 10 | Document as a plugin in Shopware refers to the essential capabilities of generating and managing documents within the e-commerce platform. These functions are typically part of the core Shopware system but can be extended or customized using plugins. 11 | -------------------------------------------------------------------------------- /resources/guidelines/code/session-and-state.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Session and State 4 | position: 120 5 | 6 | --- 7 | 8 | # Session and State 9 | 10 | Within the `Core` domain, it is not allowed to access the PHP session. There is only one PHP session if it is a Storefront request. The appropriate implementation and consideration of session data must be handled in the Storefront domain. 11 | -------------------------------------------------------------------------------- /resources/references/storefront-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Storefront Reference 4 | position: 60 5 | 6 | --- 7 | 8 | # Storefront Reference 9 | 10 | The storefront reference documents functions, filters, and extensions that are available for customizing storefronts. It helps you understand how to use these features to enhance the functionality and appearance of your storefront. 11 | -------------------------------------------------------------------------------- /guides/plugins/apps/app-sdks/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: App SDKs 4 | position: 20 5 | 6 | --- 7 | 8 | # App SDKs 9 | 10 | The Shopware app SDK enables you to build applications and plugins that extend the functionality of the Shopware e-commerce platform. It provides the necessary resources and tools to simplify the development process and integrate custom logic into the Shopware environment. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/references/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: References 4 | position: 40 5 | 6 | --- 7 | 8 | # References 9 | 10 | This section provides additional resources and references to help you understand the B2B Suite Migration process better. It includes links to related documentation, command references for executing migration tasks, and other relevant materials. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/administration/index.md: -------------------------------------------------------------------------------- 1 | # Administration 2 | 3 | B2B Suite Administration modules are built following the official [Shopware Administration](https://developer.shopware.com/docs/guides/plugins/plugins/administration/) documentation. For a more in-depth guide, please refer to the [User documentation](https://docs.shopware.com/en/shopware-6-en/extensions/b2b-suite-administration). 4 | -------------------------------------------------------------------------------- /products/paas/shopware/guides/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Guides 4 | position: 50 5 | --- 6 | 7 | # Guides 8 | 9 | This section provides a collection of common guides and best practices for working with Shopware PaaS Native. Here, you will find step-by-step instructions, helpful tips, and resources to assist you in setting up, configuring, and optimizing your Shopware PaaS Native environment. 10 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/storefront/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Storefront 4 | position: 20 5 | 6 | --- 7 | 8 | # Storefront 9 | 10 | The B2B Suite Storefront component includes features like Ajax panel, product search, complex views, model component, company management, ACL routing, and extensibility options for customization and enhanced user-friendly interface for B2B interactions. 11 | -------------------------------------------------------------------------------- /resources/guidelines/code/routing.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Routing 4 | position: 110 5 | 6 | --- 7 | 8 | # Routing 9 | 10 | * Storefront routes must always have the prefix `frontend` in the name. 11 | * Every route must have the `Shopware\Core\Framework\Routing\Annotation\Since` annotation. 12 | * Each core route must have a schema defined under `src/Core/Framework/Api/ApiDefinition/Generator/Schema`. 13 | -------------------------------------------------------------------------------- /guides/plugins/apps/starter/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: App Starter Guides 4 | position: 10 5 | 6 | --- 7 | 8 | # App Starter Guides 9 | 10 | The app starter guide provides a comprehensive approach to extending the platform's functionality. The following section guides you on creating custom API endpoints with App scripts, reading and writing data to/from Shopware, and creating custom admin extensions. 11 | -------------------------------------------------------------------------------- /guides/plugins/apps/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Content 4 | position: 80 5 | 6 | --- 7 | 8 | # Content 9 | 10 | You can assign content to specific categories, create layouts, and control the visibility of content based on various conditions. It provides a flexible and intuitive system for managing and presenting your store's content, helping you deliver a seamless and engaging customer experience. 11 | -------------------------------------------------------------------------------- /resources/references/app-reference/script-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Script Reference 4 | position: 10 5 | 6 | --- 7 | 8 | # Script Reference 9 | 10 | Script references include detailed explanations of the available functions, methods, arguments, responses, and samples. 11 | 12 | This reference gives you an understanding of the various service capabilities, code structure, and functionalities. 13 | -------------------------------------------------------------------------------- /concepts/commerce/checkout-concept/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Checkout 4 | position: 20 5 | 6 | --- 7 | 8 | # Checkout 9 | 10 | The checkout holds a series of steps to purchase items in your store. The checkout in Shopware deals with the entire process of turning a cart into an order and initiating all associated processes like payment, shipping, etc. 11 | 12 | This section further focuses on carts, orders and payment. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/elasticsearch/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Elasticsearch 4 | position: 40 5 | 6 | --- 7 | 8 | # Elasticsearch 9 | 10 | By extending fields of an entity to the Elasticsearch engine, you expand the search capabilities of Shopware, allowing users to search based on additional attributes or metadata. This enhances the overall search experience and enables more targeted and precise search results for customers. 11 | -------------------------------------------------------------------------------- /products/sales-agent/testing.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Testing 4 | position: 50 5 | 6 | --- 7 | 8 | # Testing 9 | 10 | ## Unit Tests 11 | 12 | [Vitest](https://vitest.dev/) is used for unit testing. The tests are located in the `tests` directory. 13 | 14 | ## Running Tests 15 | 16 | **Unit Tests** 17 | 18 | ```bash 19 | pnpm run test 20 | ``` 21 | 22 | **Coverage** 23 | 24 | ```bash 25 | pnpm run test:coverage 26 | ``` 27 | -------------------------------------------------------------------------------- /products/paas/shopware/resources/object-storage.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Object Storage 4 | position: 30 5 | --- 6 | 7 | # Object Storage 8 | 9 | ## Introduction 10 | 11 | Applications in Shopware PaaS Native are created by default with two S3-compatible object storage buckets. A public bucket and a private bucket. 12 | 13 | You can learn more about [shopware filesystem here](../../../../guides/hosting/infrastructure/filesystem.md). 14 | -------------------------------------------------------------------------------- /snippets/config/app/storefront.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .... 5 | 6 | 7 | 100 8 | 9 | 10 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/message-queue/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Message Queue 4 | position: 40 5 | 6 | --- 7 | 8 | # Message Queue 9 | 10 | The Shopware message queue manages the asynchronous processing of tasks using a message handler, message queue, and middleware, ensuring reliable and efficient execution of background processes within the e-commerce platform. Possible tasks are sending emails, indexing products, or generating the sitemap. 11 | -------------------------------------------------------------------------------- /resources/guidelines/code/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Code 4 | position: 10 5 | 6 | --- 7 | 8 | # Code 9 | 10 | Code guidelines is a comprehensive developer handbook that includes dos and don'ts and a clear description of how the code functions, blocks, class, method, argument, return value, and files may be used. It enhances code readability, reproducibility, and usability. 11 | 12 | Refer to the following different sections to know more about it. 13 | -------------------------------------------------------------------------------- /guides/plugins/apps/custom-data/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Custom Data 4 | position: 70 5 | 6 | --- 7 | 8 | # Custom data 9 | 10 | You are able to store custom data in Shopware which you can use for your apps. You can store simple data types like strings, numbers, booleans, arrays and objects directly in core tables via [custom fields](custom-fields) or define complete new entities with own associations and lifecycle via [custom entities](custom-entities). 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shopware/docs", 3 | "version": "6.7.0-dev", 4 | "scripts": { 5 | "docs:env": "[ -d \"../developer-portal\" ] && ../developer-portal/docs-cli.cjs pull || (git clone git@github.com:shopware/developer-portal.git ../developer-portal && pnpm i -C ../developer-portal)", 6 | "docs:link": "../developer-portal/docs-cli.cjs link --src . --dst docs --symlink", 7 | "docs:preview": "../developer-portal/docs-cli.cjs preview" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/core/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Core 4 | position: 10 5 | 6 | --- 7 | 8 | # Core 9 | 10 | The B2B Suite Core component includes features such as dependency injection, REST API, CRUD service, audit log, exception handling, currency management, entity-based access control, storefront authentication, and more. These features enable efficient B2B transactions, data management, security, and integration with other systems. 11 | -------------------------------------------------------------------------------- /resources/guidelines/code/dependency-injection-dependency-handling.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Dependency Injection & Dependency Handling 4 | position: 50 5 | 6 | --- 7 | 8 | # Dependency Injection and Dependency Handling 9 | 10 | Within the Core domain, it is not allowed to access the PHP session. There is only one PHP session if it is a storefront request. The appropriate implementation and consideration of session data must be handled in the Storefront domain. 11 | -------------------------------------------------------------------------------- /resources/references/core-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Core Reference 4 | position: 20 5 | 6 | --- 7 | 8 | # Core Reference 9 | 10 | The Core reference documents essential components like the DAL, administration panel, flags, filters, Flow Builder, and Rules for efficient platform usage. It details about the classes, methods, commands, events, etc, for your reference. This helps you understand how to use these features to enhance the functionality. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/employee-management/concepts/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Concepts 4 | position: 10 5 | 6 | --- 7 | 8 | # Concepts 9 | 10 | This section includes the concepts related to Employee Management. 11 | 12 | ## Additional info 13 | 14 | It's important to keep in mind that employees are uniquely identified via their email address. 15 | When a new employee gets invited, a check will be performed to ensure that the email address is in use only once. 16 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/execution/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Execution 4 | position: 20 5 | 6 | --- 7 | 8 | # Execution 9 | 10 | Executing the migration involves preparing your environment, running specific commands, and troubleshooting issues. Key steps include backing up data, ensuring the queue worker is active, and using console commands to start and monitor the migration. Detailed instructions ensure you can track progress and handle errors effectively. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/store-api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Store API 4 | position: 60 5 | 6 | --- 7 | 8 | # Store API 9 | 10 | The Store API plugin in Shopware enables the addition of custom endpoints to the existing Store API and the ability to override or extend the functionality of existing endpoints. This allows developers to customize the API according to their specific requirements, providing additional functionality or modifying the behavior of existing endpoints. 11 | -------------------------------------------------------------------------------- /resources/references/app-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: App Reference 4 | position: 40 5 | 6 | --- 7 | 8 | # App Reference 9 | 10 | The app reference document gives you an understanding of the app structure, functions, methods, events, variables, responses, and examples for building quality apps in Shopware. 11 | 12 | Overall, the app reference document is a valuable resource for creating feature-rich and seamless custom apps that integrate seamlessly with the Shopware platform. 13 | -------------------------------------------------------------------------------- /snippets/config/app/webhooks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ... 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /guides/hosting/infrastructure/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Infrastructure 4 | position: 40 5 | 6 | --- 7 | 8 | # Infrastructure 9 | 10 | The Hosting infrastructure for Shopware includes Elasticsearch for advanced search, a database cluster for data storage, a filesystem for media files, a message queue for asynchronous communication, a rate limiter for request management, and a reverse HTTPS proxy for secure communication. 11 | 12 | More detailed information is described in the following sections. 13 | -------------------------------------------------------------------------------- /guides/hosting/performance/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Performance 4 | position: 30 5 | 6 | --- 7 | 8 | # Performance 9 | 10 | By fine-tuning cache usage, optimizing session and storage management, and employing efficient locking mechanisms, you can significantly improve the overall performance of your online store. Optimizing hosting performance involves considering these factors and implementing appropriate strategies to enhance the speed, scalability, and reliability of your Shopware store. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/development/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Development 4 | position: 30 5 | 6 | --- 7 | 8 | # Development 9 | 10 | For developers looking to customize or extend the migration, this section provides guidance on adding new components, extending existing entities, and validating configurations. It includes detailed steps for creating configurator, defining XML mappings, and setting conditions or default values, enabling you to tailor the migration to your needs. 11 | -------------------------------------------------------------------------------- /products/paas/shopware/monitoring/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Monitoring 4 | position: 40 5 | --- 6 | 7 | # Monitoring 8 | 9 | Shopware PaaS Native provides comprehensive monitoring capabilities to help you track the health and performance of your applications. With built-in monitoring tools, you can observe your application's behavior, troubleshoot issues, and ensure optimal performance in your cloud environment. This section introduces 3 key components used in monitoring: Logs, Traces and Events. 10 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | changelog: 2 | exclude: 3 | labels: 4 | - ignore-for-release 5 | authors: 6 | - octocat 7 | categories: 8 | - title: Highlights 🎉 9 | labels: 10 | - highlight 11 | - title: New Content 🆕 12 | labels: 13 | - new 14 | - title: Added Content ➕ 15 | labels: 16 | - added 17 | - title: Bug fixes 🐛 18 | labels: 19 | - bugfix 20 | - patch 21 | - title: Other Changes 22 | labels: 23 | - "*" -------------------------------------------------------------------------------- /resources/references/adr/YYYY-MM-DD-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | area: {{ area }} 5 | tags: [{{ tags }}] 6 | --- 7 | 8 | # {{ title }} 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/YYYY-MM-DD-template.md) 13 | ::: 14 | 15 | ## Context 16 | 17 | ## Decision 18 | 19 | ## Consequences 20 | -------------------------------------------------------------------------------- /products/sales-agent/deployment.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Deployment 4 | position: 40 5 | 6 | --- 7 | 8 | # Deployment 9 | 10 | For general information about running a Nuxt application in production, refer to the [official docs](https://nuxt.com/docs/getting-started/deployment). 11 | 12 | In addition, you still need to setup the Database and cache layer for production mode. 13 | 14 | ## Nuxt production build 15 | 16 | To build and start the project in production mode: 17 | 18 | ```bash 19 | pnpm build 20 | pnpm start 21 | ``` 22 | -------------------------------------------------------------------------------- /concepts/commerce/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Commerce 4 | position: 10 5 | 6 | --- 7 | 8 | # Commerce 9 | 10 | At core, Shopware is an **ecommerce platform**. If you want to understand the commerce-related concepts of our software, make sure to go here. 11 | 12 | ::: info 13 | The **Concepts** section does not contain code examples, instead we focus on conveying the concepts and ideas behind the software. If you want more guided, step-by-step tutorials, please head to the [Guides](../../guides/installation/) section. 14 | ::: 15 | -------------------------------------------------------------------------------- /guides/hosting/infrastructure/elasticsearch/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Elasticsearch 4 | position: 5 5 | 6 | --- 7 | 8 | # Elasticsearch 9 | 10 | Elasticsearch is a robust search engine that can be integrated into Shopware to provide advanced search capabilities. It also supports AND/OR operations. 11 | 12 | The following sections will help you to set up, configure, debug, resolve indexing issues, and optimize performance. By following these steps, you can leverage Elasticsearch to enhance search functionality in your Shopware store. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/checkout/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Checkout 4 | position: 20 5 | 6 | --- 7 | 8 | # Checkout 9 | 10 | A checkout plugin in Shopware improves the checkout process for customers, offering features like guest checkout, custom fields, multiple payment options, address validation, order summaries, shopping cart, shipping method selection, and promotional code support. It ensures a smooth and efficient checkout experience for customers while providing businesses with the flexibility to meet their specific requirements. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/employee-management/guides/b2b-roles.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: B2B Roles 4 | position: 30 5 | 6 | --- 7 | 8 | # B2B Roles 9 | 10 | Roles can be used to bind multiple permission to employees with contexts. Every employee can have one assigned role. Based on that role and the containing permission, the employee will get access to certain information and functionalities. 11 | 12 | The business partner has the opportunity to create a **default** role that will be selected by default, when creating a new employee. 13 | -------------------------------------------------------------------------------- /resources/guidelines/code/context-rules-rule-systems.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Context Rules & Rule Systems 4 | position: 40 5 | 6 | --- 7 | 8 | # Context Rules and Rule Systems 9 | 10 | * In a rule, there must never be a query against the database because all configured rules are validated in a request. 11 | * Rules that check for the cart must always support the `\Shopware\Core\Checkout\Cart\Rule\CartRuleScope` class and the `\Shopware\Core\Checkout\Cart\Rule\LineItemScopeclass`. 12 | * Rules may only access data provided in the appropriate scopes. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/checkout/order/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Order 4 | position: 30 5 | 6 | --- 7 | 8 | # Order 9 | 10 | Orders in Shopware encompass the essential capabilities related to managing and processing orders within the e-commerce platform, including order placement, order management, order status tracking, order customization, order notifications, and order history. While these functions are typically available within the Shopware core system, plugins offer the flexibility to extend or customize them based on specific business needs. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Framework 4 | position: 50 5 | 6 | --- 7 | 8 | # Framework 9 | 10 | Shopware is a flexible e-commerce framework that allows developers to extend and customize the platform according to specific business needs, creating scalable and personalized online stores. The Shopware framework offers data abstraction, custom fields, events, rules, message queues, file systems, flows, and rate limiters. 11 | 12 | More about these features and their extensibility is mentioned in the further sections. 13 | -------------------------------------------------------------------------------- /resources/references/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: References 4 | position: 10 5 | 6 | --- 7 | 8 | # References 9 | 10 | The references serve as essential resources for developers, administrators, and testers, providing comprehensive details on implementation parameters. They cover every aspect of the platform, including objects, functions, classes, and more. By consulting these references, you will be able to gain a deep understanding of Shopware's capabilities and utilize its features effectively in your development, administration, and testing tasks. 11 | -------------------------------------------------------------------------------- /.github/workflows/spellcheck.yml: -------------------------------------------------------------------------------- 1 | name: Spellcheck 2 | 3 | on: 4 | pull_request: 5 | branches: [ main, v6.5, v6.4 ] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | spellcheck: 10 | name: Spellcheck 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: rojopolis/spellcheck-github-actions@0.49.0 15 | name: Spellcheck 16 | with: 17 | config_path: .spellcheck.yml 18 | task_name: Markdown 19 | # sort words in .wordlist.txt with "sort .wordlist.txt -o .wordlist.txt" 20 | -------------------------------------------------------------------------------- /guides/plugins/apps/flow-builder/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Flow Builder 4 | position: 60 5 | 6 | --- 7 | 8 | # Flow Builder 9 | 10 | Shopware allows you to extend the functionality of the flow builder by adding custom flow actions from an app. By creating a custom app and defining your own flow actions, you can incorporate unique logic and behavior into the flow builder's workflows. This enables you to create more advanced and tailored automation processes within your online store, enhancing the efficiency and customization of your business operations. 11 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/setup-3rd-party/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Setup 3rd parties 4 | position: 20 5 | 6 | --- 7 | 8 | # Setup 3rd parties 9 | 10 | This section will show you how to set up 3rd parties of *Digital Sales Rooms*. 11 | 12 | * [Daily.co](https://www.daily.co/) - Refer to setup instructions for [realtime video call](./realtime-video-dailyco.md) 13 | * [Mercure](https://mercure.rocks/)- Refer to setup instructions for [realtime Mercure service](./realtime-service-mercure.md) 14 | 15 | The following sections give you a detailed setup procedure. 16 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/rate-limiter/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Rate Limiter 4 | position: 90 5 | 6 | --- 7 | 8 | # Rate Limiter 9 | 10 | A rate limiter controls the rate or frequency at which API requests can be made. It sets limits on the number of requests that can be processed within a specified time period, preventing excessive usage. Hence eliminating the chance of brute-force attacks. Rate limiters help maintain system stability, protect against misuse, and ensure fair resource allocation by enforcing predefined limits on the rate of incoming requests. 11 | -------------------------------------------------------------------------------- /resources/references/config-reference/server/caddy.md: -------------------------------------------------------------------------------- 1 | # Caddy 2 | 3 | ```text 4 | mydomain.com { 5 | header { 6 | X-Frame-Options DENY 7 | Referrer-Policy no-referrer-when-downgrade 8 | } 9 | 10 | @svg { 11 | file 12 | path *.svg 13 | } 14 | 15 | header @svg Content-Security-Policy "script-src 'none'" 16 | 17 | @default { 18 | not path /theme/* /media/* /thumbnail/* /bundles/* /css/* /fonts/* /js/* /recovery/* /sitemap/* 19 | } 20 | 21 | root * public 22 | php_fastcgi 127.0.0.1:9000 23 | encode zstd gzip 24 | file_server 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/installation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Installation 4 | position: 10 5 | 6 | --- 7 | 8 | # Digital Sales Rooms Installation 9 | 10 | ::: warning 11 | This section will show how to install **Digital Sales Rooms** plugin into the existing Shopware platform. It will not explain a Shopware platform installation. 12 | ::: 13 | 14 | ::: info 15 | Before we start, lets assume Shopware platform is running at `https://shopware.store` & frontend app will run in `https://dsr.shopware.io`. 16 | ::: 17 | 18 | This includes installation at admin and at template. 19 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/order-approval/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Order Approval 4 | position: 20 5 | 6 | --- 7 | 8 | # Order approval component 9 | 10 | Order approval component is a part of the B2B Employee Management. It allows you to define rules that determine which orders require approval and which employees can approve them. It also allows you to view all pending orders and approve or decline them. 11 | 12 | ## Requirements 13 | 14 | * You need to have Employee Management component installed and activated (see [Employee Management](../employee-management/)). 15 | -------------------------------------------------------------------------------- /resources/guidelines/code/events.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Events 4 | position: 70 5 | 6 | --- 7 | 8 | # Events 9 | 10 | * An event must always implement the `\Shopware\Core\Framework\Event\ShopwareEvent` interface. 11 | * Events thrown in the context of a sales channel must always implement the interfaces `ShopwareSalesChannelEvent` and `Shopware\Core\Framework\Event\SalesChannelAware`. 12 | * Events are mostly used to allow developers to load more data. They should, as a rule, not interfere with the program flow. The decoration pattern is intended for influencing the program flow. 13 | -------------------------------------------------------------------------------- /snippets/config/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: fingers_crossed 5 | action_level: error 6 | handler: nested 7 | excluded_http_codes: [404, 405] 8 | buffer_size: 30 # How many messages should be saved? Prevent memory leaks 9 | business_event_handler_buffer: 10 | level: error 11 | nested: 12 | type: rotating_file 13 | path: "%kernel.logs_dir%/%kernel.environment%.log" 14 | level: error 15 | console: 16 | type: console 17 | process_psr_3_messages: false 18 | channels: ["!event", "!doctrine"] 19 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/concept/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Concepts 4 | position: 10 5 | 6 | --- 7 | 8 | # Concepts 9 | 10 | B2B Suite is a comprehensive software solution that facilitates efficient and seamless business-to-business transactions. It provides organizations with a complete set of tools and functionalities to enhance communication, collaboration, and transaction management with their trading partners. In this section, you will explore the key components of the B2B Suite, including its system architecture, the basic conventions of B2B, the method structure, and the line item list. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: B2B Suite 4 | position: 20 5 | 6 | --- 7 | 8 | # B2B Suite 9 | 10 | To build a robust B2B solution within the Shopware ecosystem, refer to this section which details every concept from scratch, including installation, system architecture, basic conventions, example plugins, Core, Administration, and Storefront component operations. 11 | 12 | This section covers Shopware 6 related information on our B2B Suite. However, for information on Shopware 5, go through [B2B Suite Shopware 5 documentation](https://developers.shopware.com/shopware-enterprise/b2b-suite/). 13 | -------------------------------------------------------------------------------- /concepts/commerce/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Content 4 | position: 30 5 | 6 | --- 7 | 8 | # Content 9 | 10 | Shopware 6 has an integrated content management system based upon layouts which is called *Shopping Experiences*. The tool used to compose and manage layouts is part of the [Admin panel](../../framework/architecture/administration-concept) and referred to as *Page Builder*. 11 | 12 | Beyond content management, Shopware also provides [Cookie Consent Management](cookie-consent-management) with features to help support GDPR compliance by handling customer privacy preferences and cookie handling transparently. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/media/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Media 4 | position: 30 5 | 6 | --- 7 | 8 | # Media 9 | 10 | Shopware Media offers the ability to add media file extensions and prevent the deletion of media files within the e-commerce platform. 11 | 12 | With the Media plugin, users can specify and configure new media file extensions. This allows businesses to define different types of media files, such as images, videos, or documents, that can be uploaded and used within the Shopware platform. 13 | 14 | Furthermore, the plugin helps prevent the deletion of media files that are not used in your application. 15 | -------------------------------------------------------------------------------- /guides/plugins/plugins/checkout/cart/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Cart 4 | position: 10 5 | 6 | --- 7 | 8 | # Cart 9 | 10 | Cart core functions as a plugin in Shopware include adding products to the cart, displaying cart contents, adding discounts to line items, updating cart items, adding custom prices to line items, applying tax rates, proceeding to checkout, persisting cart data, integrating with the checkout process, and validating the cart. While these functions are typically available within the Shopware core system, plugins can enhance and customize them according to specific business requirements or customer preferences. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/testing/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Testing 4 | position: 80 5 | 6 | --- 7 | 8 | # Testing 9 | 10 | When it comes to testing, you might immediately think about unit tests. Of course, we have got you covered then: 11 | 12 | 13 | 14 | The following section also covers unit tests in [Storefront](./jest-storefront.md) and [Administration](./jest-admin.md). 15 | 16 | Even though unit tests are definitely great, you might want to do some end-to-end testing, which is covered here: 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/organization-unit/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Organization unit 4 | position: 20 5 | 6 | --- 7 | 8 | # Organization unit component 9 | 10 | Organization unit component is a part of the B2B Employee Management. Each unit can have its own set of employees, and use specific payment and shipping methods. It will allow for the configuration of more differentiated and specific access rights to meet the needs of businesses with complex structures. 11 | 12 | ## Requirements 13 | 14 | * You need to have Employee Management component installed and activated (see [Employee Management](../employee-management/)). 15 | -------------------------------------------------------------------------------- /resources/references/core-reference/actions-reference.md: -------------------------------------------------------------------------------- 1 | # Actions Reference 2 | 3 | ## B2B 4 | 5 | | Class | Description | Component | 6 | |:------------------------------------------------|:---------------------------------------------------------------|:--------------------| 7 | | ChangeEmployeeStatusAction | Assigns the configured status to the employee | Employee Management | 8 | | ChangeCustomerSpecificFeaturesAction | Adds or removes the configured b2b components for the customer | Employee Management | 9 | -------------------------------------------------------------------------------- /guides/plugins/plugins/checkout/payment/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Payment 4 | position: 40 5 | 6 | --- 7 | 8 | # Payment 9 | 10 | Payment feature in Shopware encompasses the essential capabilities related to processing and managing payments within the e-commerce platform, including integrating payment methods, tracking payment status, handling refunds and cancellations, and sending payment notifications. While these functions are typically available within the Shopware core system, plugins offer flexibility to extend or customize them based on specific business requirements, compliance needs, or integration with preferred payment providers. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/data-handling/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Data Handling / DataAbstractionLayer 4 | position: 10 5 | 6 | --- 7 | 8 | # Data Handling/DataAbstractionLayer 9 | 10 | The data handling, or the Data Abstraction Layer \(DAL\), can be an overwhelming topic. Yet, if you know the right start, it will be fairly easy to deal with. 11 | 12 | Hence, here are some good starting topics: 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Also, [listening to events](using-database-events) of the DAL will come in handy for sure. 21 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/best-practices/saas/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: SaaS 4 | position: 20 5 | 6 | --- 7 | 8 | # Digital Sales Rooms with SaaS 9 | 10 | If you are a *Beyond merchant* and are using SaaS, the *Digital Sales Rooms* plugin is installed in your SaaS instance. So, you should see the *Digital Sales Rooms* section in the Marketing menu item. 11 | However, there are some steps that need to be completed to ensure the DSR functions fully with SaaS: 12 | 13 | - [Deploy the frontend app](../app-deployment/index.md) 14 | 15 | - [3rd parties](../../setup-3rd-party/index.md) 16 | 17 | - [Configuration](../../configuration/index.md) 18 | -------------------------------------------------------------------------------- /resources/references/config-reference/server/apache.md: -------------------------------------------------------------------------------- 1 | # Apache 2 | 3 | ::: info 4 | The document root must always point to the public folder, to ensure all functionality works. 5 | ::: 6 | 7 | ```text 8 | 9 | ServerName "HOST_NAME" 10 | DocumentRoot _SHOPWARE_LOCATION_/public 11 | 12 | 13 | Options Indexes FollowSymLinks MultiViews 14 | AllowOverride All 15 | Order allow,deny 16 | allow from all 17 | 18 | 19 | ErrorLog ${APACHE_LOG_DIR}/shopware.error.log 20 | CustomLog ${APACHE_LOG_DIR}/shopware.access.log combined 21 | 22 | ``` 23 | -------------------------------------------------------------------------------- /.lycheeignore: -------------------------------------------------------------------------------- 1 | https://example.es/ 2 | https://shopware.stoplight.io/docs/swag-sales-agent/ 3 | https://nuxt.com/docs/guide/directory-structure/pages 4 | https://github.com/shopware/shopware/blob/trunk/src/Core/Content/Test/Product/SalesChannel/Listing/CachedProductListingRouteTest.php 5 | https://github.com/shopware/shopware/blob/trunk/src/Core/Content/Test/Product/Cart/ProductCartTest.php 6 | https://github.com/shopware/shopware/blob/6.4.17.0/src/Core/Framework/Update/Services/UpdateHtaccess.php 7 | https://github.com/shopware/shopware/blob/trunk/src/Core/Checkout/Customer/Rule/IsNewCustomerRule.php 8 | https://www.tim-wellhausen.de/papers/ExpandAndContract/ExpandAndContract.html -------------------------------------------------------------------------------- /snippets/config/app/setup.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | ... 6 | 7 | 8 | 9 | https://my.example.com/registration 10 | 11 | mysecret 12 | 13 | 14 | -------------------------------------------------------------------------------- /guides/plugins/apps/content/cms/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: CMS 4 | position: 10 5 | 6 | --- 7 | 8 | # CMS 9 | 10 | Shopware allows you to extend the content management capabilities of the platform by adding a custom CMS block from an app. By creating a custom app, you can define and integrate your own unique CMS blocks. These blocks can contain custom content, such as text, images, or HTML, and can be positioned within the CMS layout according to your requirements. Once the app is installed and activated, the custom CMS block becomes available within the Shopware administration panel, empowering you to create engaging and tailored content for your online store. 11 | -------------------------------------------------------------------------------- /guides/plugins/themes/add-assets-to-theme.md.rej: -------------------------------------------------------------------------------- 1 | diff a/guides/plugins/themes/add-assets-to-theme.md b/guides/plugins/themes/add-assets-to-theme.md (rejected hunks) 2 | @@ -53,8 +52,8 @@ This way of adding custom assets refers to the default way of dealing with asset 3 | 4 | You can link to the asset with the twig [asset](https://symfony.com/doc/current/templates.html#linking-to-css-javascript-and-image-assets) function: 5 | 6 | -```html 7 | - 8 | +```twig 9 | +{{ asset('bundles/swagbasicexampletheme/your-image.png', 'asset') }} 10 | ``` 11 | 12 | In SCSS you can link to the asset like the following: 13 | -------------------------------------------------------------------------------- /products/extensions/migration-assistant/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Migration Assistant 4 | position: 10 5 | 6 | --- 7 | 8 | # Migration Assistant 9 | 10 | To either migrate data (products, customers, etc.) from the existing shop system to Shopware 6 or to update them, you need to establish a connection between a data source (existing shop, e.g., Shopware 5) and Shopware 6. The Migration Assistant makes it possible to connect these two systems. Once the connection is established, it can be accessed at any time. After the first complete migration, individual datasets can also be migrated or updated as needed. 11 | 12 | Lets learn more about this extension in the following sections. 13 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/execution/prerequisites.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Prerequisites 4 | position: 10 5 | 6 | --- 7 | 8 | # Prerequisites 9 | 10 | Before starting the migration, complete the following steps: 11 | 12 | ## Backup Your Data 13 | 14 | ::: warning 15 | If you are using B2B Commercial and already have data in it, you should back up your Database before initiating the migration. The migration is designed to add data to B2B Commercial and not remove any data from B2B Suite, having a backup ensures you can restore your data in case of any issues. 16 | ::: 17 | 18 | ## Queue Worker 19 | 20 | Ensure the message queue worker is running to process migration tasks. 21 | -------------------------------------------------------------------------------- /snippets/config/app/full-permissions.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | ... 6 | 7 | 8 | 9 | product 10 | 11 | 12 | system:cache:info 13 | 14 | 15 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/setup-3rd-party/realtime-video-dailyco.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Realtime Video Call - Daily.co 4 | position: 10 5 | 6 | --- 7 | 8 | # Realtime Video Call - Daily.co 9 | 10 | The service is responsible for streaming a video between the attendees. 11 | 12 | ## Login Daily.co dashboard 13 | 14 | - Go to the dashboard at: 15 | - Login or register with the *Daily.co* account. 16 | 17 | ## Get the API key 18 | 19 | - Visit the “developers” section on the left 20 | - Copy the *API KEY* and paste it [here](../configuration/plugin-config.md#video-and-audio) 21 | 22 | ![DailyAPIConfig](../../../assets/products-digitalSalesRooms-videoConfig.png) 23 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/shopping-lists/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Shopping lists 4 | position: 10 5 | 6 | --- 7 | 8 | # Shopping Lists 9 | 10 | The *Shopping lists* component is designed to help users easily manage their shopping needs. It allows users to create, edit, and organize their shopping lists efficiently. With features such as item categorization, quantity tracking, and the ability to mark items as purchased, the *Shopping lists* ensure that users can shop with ease and never forget essential items. Whether you are planning for a weekly grocery trip or a special event, the *Shopping lists* component provides a simple and intuitive solution to keep track of all your shopping requirements. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: API 4 | position: 90 5 | 6 | --- 7 | 8 | # API 9 | 10 | Commercial plugins are pre-built extensions developed by third-party vendors that offer specific features and integrations. In some cases, commercial plugins may expose their own APIs, which developers can use to interact with the plugin's functionalities allowing customization and integration with other systems. 11 | 12 | Overall, commercial plugins and APIs work together to expand the capabilities of the Shopware platform. Commercial plugins offer ready-to-use solutions, while APIs provide the flexibility for developers to build custom integrations and extend the functionality of Shopware even further. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/flow/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Flow 4 | position: 80 5 | 6 | --- 7 | 8 | # Flow 9 | 10 | The flow builder plugin allows businesses to create and manage custom workflows and automation within the e-commerce platform, enhancing efficiency and streamlining processes. The flow builder mainly comprises actions and triggers. 11 | 12 | The customizable flow actions allow the automation of various tasks or processes, while the custom flow triggers are the events or conditions that initiate the execution of this flow. These customizations can be defined and executed within the flow builder enabling businesses to respond dynamically to specific events or changes in their e-commerce platform. 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/plugin-fundamentals/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Plugin fundamentals 4 | position: 10 5 | 6 | --- 7 | 8 | # Plugin Fundamentals 9 | 10 | Shopware plugins are PHP-based extensions that enhance the functionality of the Shopware e-commerce platform. They follow a specific directory structure and have a lifecycle for installation, activation, deactivation, and uninstallation. Plugins can utilize hooks and events to interact with core functionality, and they can have controllers, services, and models to handle specific tasks. Plugin configuration options can be defined, and integration with various parts of Shopware is possible. 11 | 12 | You will learn more about it in depth in the following sections. 13 | -------------------------------------------------------------------------------- /products/extensions/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Extensions 4 | position: 10 5 | 6 | --- 7 | 8 | # Extensions 9 | 10 | Shopware provides some unique extensions: 11 | 12 | * Migration Assistant - An extension that connects the source shop and the target shop to migrate data. 13 | * B2B Suite - The B2B Suite extension equips your store with the most important B2B functions. These include workflows, order lists, budgets, and quick orders. 14 | * B2B Components - B2B components enable you to enhance your shop with essential B2B functionalities. 15 | * Advanced Search - This offers the possibility to customize the search fields. 16 | * Subscriptions - Subscription extension allows you to offer products on a subscription basis. 17 | -------------------------------------------------------------------------------- /guides/plugins/apps/rule-builder/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Rule Builder 4 | position: 90 5 | 6 | --- 7 | 8 | # Rule Builder 9 | 10 | Shopware allows you to enhance the capabilities of the rule builder by adding custom rules from an app. By creating a custom app and defining your own rules, you can incorporate specific conditions and actions based on your business requirements. This empowers you to create dynamic and personalized customer experiences, such as customized promotions, targeted discounts, or advanced product recommendations. 11 | 12 | Starting with version 6.4.12.0, apps are able to [add custom rule conditions](./add-custom-rule-conditions) for use in the [Rule Builder](../../../../concepts/framework/rules). 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Content 4 | position: 30 5 | 6 | --- 7 | 8 | # Content 9 | 10 | Content feature in Shopware encompasses the essential capabilities related to managing and enhancing content within the e-commerce platform, including content management, email management, SEO optimization, sitemap generation, and media management. These functions enhance website content, facilitate effective communication, improve search engine visibility, and streamline media organization within the e-commerce platform. While these functions are typically available within the core Shopware system, plugins offer the flexibility to extend or customize them based on specific business needs and content strategies. 11 | -------------------------------------------------------------------------------- /resources/guidelines/code/document-code.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Document Code 4 | position: 60 5 | 6 | --- 7 | 8 | # Document Code 9 | 10 | * Methods of interfaces or abstract classes should always have a doc block describing what the function is used for and what is to be observed in the function. This should serve to clarify what an implementation has to take into account. 11 | * Unnecessary doc block lines should always be avoided. This includes the `@param` and `@return` annotations as long as this is already defined by type hints. 12 | * In a doc block, all exceptions thrown directly by the function should be documented via `@throws` annotation. 13 | * Exceptions that could be thrown by a library are not included in the doc blocks. 14 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/best-practices/app-deployment/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Frontend App Deployment 4 | position: 10 5 | 6 | --- 7 | 8 | # Frontend App Deployment 9 | 10 | According to [Shopware Frontends deployment document](https://frontends.shopware.com/best-practices/deployment.html), all the templates which were generated by Shopware Frontends can be deployed in multiple ways, depending on the setup you are using. Most likely you will be using either a static hosting service or a server with a Node.js runtime. 11 | 12 | You may find the different approaches as described in [Nuxt instruction](https://nuxt.com/deploy). 13 | 14 | Alternatively, we will show some best practices of *Digital Sales Room* frontend app deployment. 15 | -------------------------------------------------------------------------------- /products/paas/shopware/resources/databases.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Databases 4 | position: 20 5 | --- 6 | 7 | # Databases 8 | 9 | ## Introduction 10 | 11 | Shopware PaaS Native provides a managed MySQL cluster for each application created where we handle: automatic backups and recovery, high availability, performance monitoring and metrics, resource scaling (CPU, RAM, storage), automatic encryption of data at rest and in transit. 12 | 13 | ## Connecting to Database Cluster 14 | 15 | To connect to your database via CLI: 16 | 17 | ```sh 18 | sw-paas open service --service database --port 3306 19 | ``` 20 | 21 | ### Note 22 | 23 | Please check the [known issues](../known-issues.md) regarding network considerations when running this command. 24 | -------------------------------------------------------------------------------- /products/extensions/advanced-search/installation.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Installation 4 | position: 10 5 | 6 | --- 7 | 8 | # Installation 9 | 10 | This module requires the following: 11 | 12 | * Advanced Search 2.0 is a licensed feature of the Commercial package. It is available for `Evolve` and `Beyond` plan. 13 | * Opensearch server is up and running. 14 | * `Shopware\Elasticsearch\Elasticsearch` bundle is enabled in `config/bundles.php`. 15 | * On-prem environment configuration: 16 | 17 | ```text 18 | OPENSEARCH_URL=http://localhost:9200 19 | ES_MULTILINGUAL_INDEX=1 20 | SHOPWARE_ES_ENABLED=1 21 | SHOPWARE_ES_INDEXING_ENABLED=1 22 | SHOPWARE_ES_INDEX_PREFIX=sw 23 | ``` 24 | 25 | * Commercial plugin version 5.5.0 onward is installed and activated. 26 | -------------------------------------------------------------------------------- /resources/guidelines/code/platform-domains.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Platform Domains 4 | position: 90 5 | 6 | --- 7 | 8 | # Platform Domains 9 | 10 | * The `Core` domain must not have any dependency on any of the other domains. This means that neither classes nor assets from `Storefront`, `Administration` or `Elasticsearch` may be used within the `Core` domain. 11 | * The `Administration` domain may have dependencies on the `Core` domain but not on the `Storefront` or `Elasticsearch` domain. 12 | * The `Elasticsearch` domain may have dependencies on the `Core` domain but not on the `Storefront` or `Administration` domain. 13 | * The `Storefront` domain may have dependencies on the `Core` domain, but not on the `Administration` or `Elasticsearch` domain. 14 | -------------------------------------------------------------------------------- /snippets/config/app/permissions.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | ... 6 | 7 | 8 | product 9 | product 10 | product 11 | product 12 | 13 | 14 | system:cache:info 15 | 16 | 17 | -------------------------------------------------------------------------------- /.github/workflows/file-format-check.yml: -------------------------------------------------------------------------------- 1 | name: Check asset file names 2 | on: pull_request 3 | 4 | jobs: 5 | Filenamecheck: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | - shell: bash 10 | run: | 11 | find assets -maxdepth 1 | grep "\.[A-Z]" && echo "ERROR: Ensure file extensions are in lowercase" && exit 1 || echo "" 12 | find assets -maxdepth 1 -type f -printf '%f\n' | grep "[_+& ]" && echo "ERROR: No special characters, except hyphen, are allowed in file names" && exit 1 || echo "" 13 | find assets -maxdepth 1 -type f -printf '%f\n' | grep -v "[-]" && echo "ERROR: No hyphen found in file names. Include hyphens to separate words e.g. storefront-checkbox.png" && exit 1 || echo "" 14 | -------------------------------------------------------------------------------- /guides/plugins/apps/administration/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Administration 4 | position: 50 5 | 6 | --- 7 | 8 | # Administration 9 | 10 | You can't extend the Shopware Administration by means of freely overriding and extending Administration components, all js files you provide in the `Resources/administration` namespace will be ignored. Instead, you have more defined extension points and can extend the Administration by other means: You are able to [add your own modules](add-custom-modules), [custom fields](../custom-data/custom-fields) or [action buttons](add-custom-action-button) via manifest file. 11 | 12 | Starting with version 6.4.2.0 you can also extend Shopware's CMS module by [adding custom CMS blocks](../content/cms/add-custom-cms-blocks). 13 | -------------------------------------------------------------------------------- /guides/plugins/plugins/testing/playwright/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Playwright E2E testing 4 | position: 10 5 | --- 6 | 7 | # Shopware Acceptance Test Suite: Playwright 8 | 9 | [Playwright](https://playwright.dev/) is a powerful tool for end-to-end testing of web applications. It allows you to automate browser interactions, making it ideal for testing the functionality of your [Shopware](https://github.com/shopware/shopware) plugins and themes. 10 | 11 | It provides several useful Playwright [fixtures](https://playwright.dev/docs/test-fixtures) to start testing with Shopware right away, including page contexts and [page objects](https://playwright.dev/docs/pom) for Storefront and Administration, API clients, test data creation, and reusable test logic. 12 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/rule/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Rule 4 | position: 50 5 | 6 | --- 7 | 8 | # Rule 9 | 10 | The Rule Builder allows users to add custom rules to create dynamic conditions and actions within the e-commerce platform. Using the Rule Builder, you can define specific criteria based on various attributes, such as customer data, cart contents, order details, or other relevant factors. These custom rules can then trigger specific actions, such as applying discounts, displaying personalized content, or adjusting pricing based on specific conditions. The Rule Builder empowers businesses to create highly tailored and automated experiences for their customers, enhancing the flexibility and customization options within the Shopware framework. 11 | -------------------------------------------------------------------------------- /guides/plugins/plugins/storefront/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Storefront 4 | position: 70 5 | 6 | --- 7 | 8 | # Storefront 9 | 10 | Storefront handles the e-commerce platform's front end, including the online store's visual presentation and user interface. 11 | 12 | You can customize and enhance the storefront by adding or modifying templates, layouts, styles, and components via plugins. It allows adding custom pages, layouts, dynamic content, filters, media, assets, and styles to create unique and engaging shopping experiences, ensuring a seamless and visually appealing interface for customers. It enables businesses to showcase their products, implement responsive designs, optimize performance, and deliver a personalized shopping journey to online visitors. 13 | -------------------------------------------------------------------------------- /.github/scripts/update-code-guidelines.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | git clone --depth 1 https://github.com/shopware/shopware.git 4 | 5 | # delete dirs 6 | rm -r ./resources/guidelines/code/core 7 | 8 | # copy contents 9 | cp -r ./shopware/coding-guidelines/core ./resources/guidelines/code/core 10 | rm ./resources/guidelines/code/core/AGENTS.md 11 | 12 | rm -rf ./shopware 13 | 14 | deno run --allow-read --allow-write ./.github/scripts/update-code-guidelines-summary.ts 15 | deno run --allow-read --allow-write ./.github/scripts/format-code-guidelines.ts 16 | 17 | find resources/guidelines/code/core -type f -name '*md' -not -name '_*' -exec sed -i 's#(../../adr/#(../../../references/adr/#' {} \; 18 | 19 | find resources/guidelines/code/ -type d -exec touch '{}'/README.md \; 20 | -------------------------------------------------------------------------------- /guides/plugins/plugins/administration/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Administration 4 | position: 60 5 | 6 | --- 7 | 8 | # Administration 9 | 10 | Shopware allows to extend the functionality of the Shopware administration panel, providing additional features and customization options for managing the e-commerce platform. The plugin allows businesses to tailor the administration interface to their specific needs, adding custom sections, modules, services, or functionalities to streamline their workflow and enhance the user experience. The administration plugin offers flexibility in configuring dashboards, menu structures, permissions, and settings, empowering businesses to create a customized and efficient administration experience that aligns with their unique requirements. 11 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/concept/migration-table.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Migration Table 4 | position: 10 5 | 6 | --- 7 | 8 | # Migration Tables 9 | 10 | The migration process introduces three tables to manage and track data migration from B2B Suite to B2B Commercial: 11 | 12 | 1. **`b2b_components_migration_state`** 13 | Tracks the status of the migration process for each entity. 14 | 15 | 2. **`b2b_components_migration_map`** 16 | Maps records between B2B Suite and B2B Commercial, ensuring traceability. 17 | 18 | 3. **`b2b_components_migration_errors`** 19 | Logs errors encountered during migration for troubleshooting. 20 | 21 | ::: info 22 | These tables enable monitoring, verification, and debugging of the migration process. 23 | ::: 24 | -------------------------------------------------------------------------------- /.github/scripts/update-adrs.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | git clone --depth 1 https://github.com/shopware/shopware.git 4 | 5 | rm -r ./resources/references/adr 6 | rm -r ./assets/adr 7 | cp -r ./shopware/adr ./resources/references 8 | rm -rf ./resources/references/adr/_superseded 9 | rm -rf ./shopware 10 | 11 | #deno run --allow-read --allow-write ./.github/scripts/update-summary.ts || true 12 | deno run --allow-read --allow-write ./.github/scripts/format-adrs.ts 13 | 14 | mkdir -p ./assets/adr 15 | mv ./resources/references/adr/assets/* assets/adr/ 16 | rm -r ./resources/references/adr/assets 17 | find resources/references/adr -type f -name '*md' -not -name '_*' -exec sed -i 's#(\./assets#(../../../assets/adr#' {} \; 18 | 19 | find resources/references/adr/ -type d -exec touch '{}'/index.md \; 20 | -------------------------------------------------------------------------------- /.github/workflows/reviewdog.yml: -------------------------------------------------------------------------------- 1 | name: Reviewdog 2 | on: pull_request 3 | 4 | jobs: 5 | reviewdog: 6 | name: Runner 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v4 10 | 11 | - uses: reviewdog/action-languagetool@v1 12 | with: 13 | level: warning 14 | language: en-US 15 | reporter: github-pr-check 16 | enabled_rules: 'PASSIVE_VOICE,SENTENCE_WHITESPACE,GOD_COMMA' 17 | #disabled_rules: 'WHITESPACE_RULE,EN_QUOTES,DASH_RULE,WORD_CONTAINS_UNDERSCORE,UPPERCASE_SENTENCE_START,ARROWS,COMMA_PARENTHESIS_WHITESPACE,UNLIKELY_OPENING_PUNCTUATION,SENTENCE_WHITESPACE,CURRENCY,EN_UNPAIRED_BRACKETS,PHRASE_REPETITION,PUNCTUATION_PARAGRAPH_END,METRIC_UNITS_EN_US,ENGLISH_WORD_REPEAT_BEGINNING_RULE,ENGLISH_WORD_REPEAT_RULE' 18 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/stock/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Stock 4 | position: 60 5 | 6 | --- 7 | 8 | # Stock 9 | 10 | ::: info 11 | The stock management system is available from Shopware 6.5.5.0. It is only enabled if the shop owner has enabled the `\STOCK_HANDLING\` feature flag. 12 | ::: 13 | 14 | The stock management system allows the allocation of stocks to products. Stock is incremented and decremented as orders are placed, modified, canceled, and refunded. 15 | 16 | In order to accommodate for the various use cases, the stock management system has been kept as simple as possible. The shop owner can deactivate it entirely if not required. 17 | 18 | To enable or disable this feature, refer to [stock configuration](../../../../../guides/hosting/configurations/shopware/stock) section. 19 | -------------------------------------------------------------------------------- /resources/guidelines/code/public-apis.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Public APIs 4 | position: 100 5 | 6 | --- 7 | 8 | # Public APIs 9 | 10 | * Services not intended for decoration or direct use must be marked with `@internal` and have an appropriate comment in the docblock why they should not be used or decorated directly. 11 | * Classes marked with `@internal` need not be kept compatible for third-party developers. Here the public API can change at any time. 12 | * `__construct` methods of services instantiated via DI container are not public API and can be changed at any time. 13 | * `__construct` functions of Data Transfer Objects \(DTO\), which the developer himself could therefore instantiate \(e.g. `CalculatedPrice`, `QuantityPriceDefinition`\), are public API and must be kept backward compatible. 14 | -------------------------------------------------------------------------------- /snippets/guide/debugging_scheduled_tasks.md: -------------------------------------------------------------------------------- 1 | ## Debugging scheduled tasks 2 | 3 | You can directly run a single scheduled task without the queue. This is useful for debugging purposes or to have better control of when and which tasks are executed. You can use `bin/console scheduled-task:run-single ` to run a single task. Example: 4 | 5 | ```shell 6 | bin/console scheduled-task:run-single log_entry.cleanup 7 | ``` 8 | 9 | ::: info 10 | Available starting with Shopware 6.7.2.0. 11 | ::: 12 | 13 | You can schedule a scheduled task with the command `scheduled-task:schedule` or deactivate a scheduled task with the command `scheduled-task:deactivate` 14 | 15 | ```shell 16 | bin/console scheduled-task:schedule log_entry.cleanup 17 | bin/console scheduled-task:deactivate log_entry.cleanup 18 | ``` 19 | -------------------------------------------------------------------------------- /products/paas/shopware-paas/rabbitmq.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: RabbitMQ 4 | position: 70 5 | 6 | --- 7 | 8 | # RabbitMQ 9 | 10 | RabbitMQ is enabled by default in the template. This service is optional but recommended. It can be disabled and replaced by an SQL-backed queue. 11 | 12 | ## Disable service 13 | 14 | Comment out the RabbitMQ service configuration. 15 | 16 | ```yaml 17 | // .platform/services.yaml 18 | #rabbitmq: 19 | # type: rabbitmq:3.8 20 | # disk: 1024 21 | ``` 22 | 23 | ## Remove relationship 24 | 25 | Comment out the relationship for the app configuration. 26 | 27 | ```yaml 28 | // .platform.app.yaml 29 | #relationships: 30 | # rabbitmqqueue: "rabbitmq:rabbitmq" 31 | ``` 32 | 33 | ## Push changes 34 | 35 | Push the changes to your git repository and wait for the deployment to finish. 36 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/filesystem/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Filesystem 4 | position: 70 5 | 6 | --- 7 | 8 | # Filesystem 9 | 10 | Plugins often need the ability to read and write files. Thanks to the [Flysystem](https://flysystem.thephpleague.com/docs/) that Shopware uses, this can be managed very easily. It does not matter whether the files are stored on the local file system or at a cloud provider. The read and write access remains the same. If you want to learn more about the configuration of the file system in Shopware, have a look at the [filesystem guide](../../../../hosting/infrastructure/filesystem). For example, you will learn how to outsource the file system to the Amazon cloud. In a plugin, we don't have to worry about the configuration and can use the advantages of the Flysystem directly. 11 | -------------------------------------------------------------------------------- /products/extensions/subscriptions/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Subscriptions 4 | position: 40 5 | 6 | --- 7 | 8 | # Subscriptions 9 | 10 | To enable flexibility in product offerings, the subscription extension aims to provide a subscription-based model for products. 11 | This extension allows you to offer products on a subscription basis. 12 | The subscription model is a recurring payment model where customers can subscribe to a product and receive it at regular intervals. 13 | This model is beneficial for products that are consumed regularly, such as groceries, cosmetics, or magazines. 14 | 15 | We suggest that you first familiarize yourself with the [subscription concepts](./concept.md) as well as the [user documentation](https://docs.shopware.com/en/shopware-6-en/settings/shop/subscriptions) before you start using the extension. 16 | -------------------------------------------------------------------------------- /products/paas/shopware/monitoring/logs.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Logs 4 | position: 20 5 | --- 6 | 7 | # Logs 8 | 9 | ## Application Logs 10 | 11 | Shopware PaaS Native allows you to view your application’s logs for a given environment via Grafana. 12 | 13 | To access Grafana, run the following command: 14 | 15 | ```bash 16 | sw-paas open grafana 17 | ``` 18 | 19 | This command will provide you with the Grafana URL, username, and password. 20 | 21 | Once logged in to Grafana: 22 | 23 | 1. Go to the **Explore** tab. 24 | 2. Select **Loki** as the data source. 25 | 3. Filter logs by setting the label `service` to the value `shopware`. 26 | 4. Run the query to view your application logs. 27 | 28 | ## Log retention 29 | 30 | Shopware PaaS Native keeps your latest logs available for review. Logs older than 14 days are automatically removed. 31 | -------------------------------------------------------------------------------- /products/paas/shopware/fundamentals/project.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Projects 4 | position: 30 5 | --- 6 | 7 | # Projects 8 | 9 | Projects represent a codebase in a GitHub, Bitbucket, or GitLab repository that is deployed to Shopware PaaS Native. Projects can contain many applications. 10 | 11 | ## Creating a New Project 12 | 13 | Initialize a new project in your organization by specifying its name, repository, and type. 14 | 15 | ```sh 16 | sw-paas project create 17 | ``` 18 | 19 | Ensure that Shopware PaaS Native has access to the repository by following [this guide](../guides/setting-up-repository-access.md). 20 | 21 | ## List All Projects 22 | 23 | Displays all projects associated with your user or organization, along with key metadata such as project name, type, and repository. 24 | 25 | **Usage:** 26 | 27 | ```sh 28 | sw-paas project list 29 | ``` 30 | -------------------------------------------------------------------------------- /products/extensions/advanced-search/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Advanced Search 4 | position: 40 5 | 6 | --- 7 | 8 | # Advanced Search 9 | 10 | ::: info 11 | Advanced Search is available starting with Commercial 5.5.0 12 | ::: 13 | 14 | Shopware Advanced Search is a part of the Commercial plugin available along with the Evolve and Beyond plan. 15 | 16 | Advanced search module is based on Elasticsearch. In addition to a high performance product search, it also offers you the possibilities to customize the search experience depending on your needs. So you could also search for manufacturers and categories. The simple Administration module allows quick and easy configuration of the search. 17 | 18 | Before continuing, you should make sure you have a basic knowledge of [Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index.html) and the Shopware implementation of it. 19 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/storefront/product-search.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Product Search 4 | position: 20 5 | 6 | --- 7 | 8 | # Product Search 9 | 10 | Our product search is a small Storefront plugin that allows you to create input fields with autocompletion for products. 11 | A small example is shown below. The plugin deactivates the default autocompletion for this field from your browser. 12 | 13 | 20 | 21 | ## Elasticsearch 22 | 23 | While using Elasticsearch, you have to enable the variants filter in the filter menu of the basic settings to show all variants in the product search. 24 | 25 | ![ProductSearchOptions](../../../../../assets/product-search-options.png) 26 | -------------------------------------------------------------------------------- /.github/workflows/markdown-style-check.yml: -------------------------------------------------------------------------------- 1 | name: markdown-style-check 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | workflow_dispatch: 8 | jobs: 9 | lint-docs: 10 | name: Documentation Markdown Linter 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Check out code 14 | uses: actions/checkout@v4 15 | 16 | - uses: denoland/setup-deno@v1 17 | with: 18 | deno-version: "~1.32" 19 | 20 | - name: Check broken PageRef links 21 | run: deno run --allow-read .github/scripts/broken-pageref.js 22 | 23 | - name: Lint all files 24 | uses: docker://avtodev/markdown-lint:v1.5 25 | with: 26 | config: 'markdown-style-config.yml' 27 | args: './' 28 | ignore: './resources/references/adr/* ./assets/adr/* ./resources/guidelines/code/core/* ./snippets/guide/*' 29 | continue-on-error: false 30 | -------------------------------------------------------------------------------- /products/paas/shopware/monitoring/traces.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Traces 4 | position: 30 5 | --- 6 | 7 | # Traces 8 | 9 | ## Application Traces 10 | 11 | Shopware PaaS Native allows you to view your application's traces for a given environment via Grafana. 12 | 13 | To access Grafana, run the following command: 14 | 15 | ```bash 16 | sw-paas open grafana 17 | ``` 18 | 19 | This command will provide you with the Grafana URL, username, and password. 20 | 21 | Once logged in to Grafana: 22 | 23 | 1. Go to the **Explore** tab. 24 | 2. Select **Tempo** as the data source. 25 | 3. Ensure the query type is **Search** 26 | 4. Filter traces by setting the Service Name to the value `shopware`. 27 | 5. Run the query to view your application traces. 28 | 29 | ## Trace Retention 30 | 31 | Shopware PaaS Native keeps your latest traces available for review. Traces older than 14 days are automatically removed. 32 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/event/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Event 4 | position: 30 5 | 6 | --- 7 | 8 | # Event 9 | 10 | Shopware events provide a flexible and powerful way to extend the functionality of the e-commerce platform. Events in Shopware are triggered at specific actions. You can extend the platform's functionality by intercepting and executing custom logic during specific system actions. By leveraging events like Storefront events, administration events, or flow builder events, to mention a few, developers can hook into core system actions, such as order placement or product updates, and perform additional tasks, such as sending notifications, modifying data, or integrating with external services, etc. This event-driven architecture enables seamless integration of custom functionalities, making it easier to extend and customize the Shopware platform to meet specific business requirements. 11 | -------------------------------------------------------------------------------- /snippets/config/app/cookies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ExampleAppWithCookies 5 | 1.0.0 6 | 7 | 8 | 9 | 10 | my-cookie 11 | example-app-with-cookies.my-cookie.name 12 | example-app-with-cookies.my-cookie.description 13 | a static value for the cookie 14 | 15 | 1 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /resources/references/adr/2022-11-21-replace-drop-shadow-with-box-shadow.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Replace drop-shadow with box-shadow 3 | date: 2022-11-21 4 | area: storefront 5 | tags: [safari, performance, storefront] 6 | --- 7 | 8 | # Replace drop-shadow with box-shadow 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2022-11-21-replace-drop-shadow-with-box-shadow.md) 13 | ::: 14 | 15 | ## Context 16 | Safari has drastic performance issues with drop-shadow. 17 | 18 | ## Decision 19 | Changing it to box-shadow solves all the performance issues. 20 | 21 | ## Consequences 22 | The design and optic of the drop-shadow is slightly different. It is not as perfect as before. But it looks almost the same 23 | and is much faster. 24 | -------------------------------------------------------------------------------- /snippets/mermaid-diagrams/checkout-orderState.mermaid: -------------------------------------------------------------------------------- 1 | flowchart TD 2 | START_STATE[Start state] --> 018c4a0eeaec71b7a0415b572e1a07f5 3 | 018c4a0eeaec71b7a0415b572e1a07f5(Open) 4 | 018c4a0eeaec71b7a0415b572e8c7a86(Done) 5 | 018c4a0eeaec71b7a0415b572e8c7a86 --> FINAL_STATE[Final state] 6 | 018c4a0eeaec71b7a0415b572f6990c5(In Progress) 7 | 018c4a0eeaec71b7a0415b572fa73aa1(Cancelled) 8 | 018c4a0eeaec71b7a0415b572fa73aa1 --> FINAL_STATE[Final state] 9 | 018c4a0eeaec71b7a0415b572e1a07f5 -- process --> 018c4a0eeaec71b7a0415b572f6990c5 10 | 018c4a0eeaec71b7a0415b572e1a07f5 -- cancel --> 018c4a0eeaec71b7a0415b572fa73aa1 11 | 018c4a0eeaec71b7a0415b572f6990c5 -- cancel --> 018c4a0eeaec71b7a0415b572fa73aa1 12 | 018c4a0eeaec71b7a0415b572f6990c5 -- complete --> 018c4a0eeaec71b7a0415b572e8c7a86 13 | 018c4a0eeaec71b7a0415b572fa73aa1 -- reopen --> 018c4a0eeaec71b7a0415b572e1a07f5 14 | 018c4a0eeaec71b7a0415b572e8c7a86 -- reopen --> 018c4a0eeaec71b7a0415b572e1a07f5 -------------------------------------------------------------------------------- /snippets/config/app/custom-fields-simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ... 5 | 6 | 7 | 8 | swag_example_set 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 1 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.github/workflows/release-note.yml: -------------------------------------------------------------------------------- 1 | name: "Publish release on Slack" 2 | on: 3 | release: 4 | types: [published] 5 | 6 | jobs: 7 | test: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Slack Markdown Converter 11 | uses: LoveToKnow/slackify-markdown-action@v1.0.2 12 | id: slackify 13 | with: 14 | text: ${{ github.event.release.body }} 15 | - name: Replace \n with \\n 16 | uses: actions/checkout@v4 17 | - run: | 18 | echo "${{ github.event.release.tag_name }}" 19 | echo "${{ steps.slackify.outputs.text }}" 20 | echo "text=${{ steps.slackify.outputs.text }}" | sed 's/\\n/%0A/g' > $GITHUB_ENV 21 | - name: Notify Slack about release 22 | uses: Isengo1989/notify-release-to-slack@master 23 | with: 24 | slackWebhookUrl: ${{ secrets.SLACK_NOTIFICATIONS_WEBHOOK }} 25 | releaseMessage: ${{ steps.slackify.outputs.text }} -------------------------------------------------------------------------------- /products/sales-agent/customization/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Customization 4 | position: 30 5 | 6 | --- 7 | 8 | # Sales Agent Customization 9 | 10 | This section explains how to customize the *Sales Agent* frontend. It is built with Nuxt 3 and leverages the [Nuxt Layer concept](https://nuxt.com/docs/getting-started/layers), allowing you to override file content with your own Nuxt layer for easy customization. 11 | 12 | ## Create a new Nuxt layer 13 | 14 | If you look into the source code, you'll find the default Nuxt layer named `sales-agent`. This layer should remain untouched. To apply customizations, you should create a new Nuxt layer and import it in `nuxt.config.ts`. For more details, refer to the [composition guide](https://nuxt.com/docs/guide/going-further/layers). Besides, we’ve also created a customization layer named `example` within the frontend source code. You can rename this layer and modify its contents to suit your needs. 15 | -------------------------------------------------------------------------------- /.github/workflows/wordlist.yml: -------------------------------------------------------------------------------- 1 | name: Sort Wordlist 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - '.wordlist.txt' 7 | 8 | jobs: 9 | sort-wordlist: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v4 15 | with: 16 | ref: refs/heads/${{ github.head_ref }} 17 | fetch-depth: 0 18 | 19 | - name: Sort .wordlist.txt 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | run: | 23 | LC_ALL=C sort .wordlist.txt -o .wordlist.txt 24 | if ! git diff --quiet .wordlist.txt; then 25 | git config user.name "github-actions[bot]" 26 | git config user.email "github-actions[bot]@users.noreply.github.com" 27 | git add .wordlist.txt 28 | git commit -m "chore: sort .wordlist.txt" 29 | git push origin "HEAD:${{ github.head_ref }}" 30 | fi 31 | -------------------------------------------------------------------------------- /guides/plugins/plugins/framework/custom-field/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Custom Fields 4 | position: 20 5 | 6 | --- 7 | 8 | # Custom Fields 9 | 10 | Custom fields in Shopware refer to additional data fields that can be added to entities such as products, customers, or orders. These fields allow businesses to store and manage extra information that may be specific to their operations. 11 | 12 | With custom fields, you can define and store data beyond the standard attributes provided by Shopware. For example, a clothing store might add a custom field to track fabric composition, while a hardware store could add a custom field to store product dimensions. 13 | 14 | Through the administration or via the API, users can create and manage custom fields, define their data types (such as text, number, date, etc.), and assign them to specific entities. This allows businesses the ability to extend the default data structure enabling a more tailored and personalized e-commerce experience. 15 | -------------------------------------------------------------------------------- /resources/guidelines/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Guidelines 4 | position: 20 5 | 6 | --- 7 | 8 | # Guidelines 9 | 10 | This document is intended for all readers and contributors. We have defined coding, documentation, and testing guidelines. 11 | 12 | The code section lays out the coding standards. This helps anyone understand and modify the code at any point while keeping the code consistent. 13 | 14 | 15 | 16 | The test section briefs you about best practices for writing end-to-end tests. 17 | 18 | 19 | 20 | The document section details you on the language style, grammar, markdown syntax, and documentation process. 21 | 22 | 23 | 24 | this document serves as a comprehensive resource for both readers and contributors, offering essential coding, testing, and documentation guidelines to maintain consistency, promote best practices, and facilitate effective collaboration. 25 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: B2B Suite Migration 4 | position: 30 5 | 6 | --- 7 | 8 | # B2B Suite Migration 9 | 10 | The B2B Suite Migration extension is designed to facilitate the migration of data from the B2B Suite to the B2B Components. This migration process is essential for merchants who want to transition from the legacy B2B Suite to the more modular and flexible B2B Components. 11 | 12 | ## Purpose 13 | 14 | This section provides a comprehensive guide for developers to migrate data from B2B Suite to B2B Commercial. It covers the migration process, from high-level concepts to detailed execution and development instructions, ensuring a smooth and reliable transition. The content is structured into focused sections to help you understand, execute, and extend the migration process effectively. 15 | 16 | ::: warning 17 | B2B Suite will no longer be supported starting Shopware 6.8. Plan your migration promptly to avoid disruptions. 18 | ::: 19 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/customization/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Customization 4 | position: 40 5 | 6 | --- 7 | 8 | # Digital Sales Rooms Customization 9 | 10 | This section explains how to customize the *Digital Sales Rooms* frontend template. The DSR frontend is built with Nuxt 3 and leverages the [Nuxt Layer concept](https://nuxt.com/docs/getting-started/layers), allowing you to override file content with your own Nuxt layer for easy customization. 11 | 12 | ## Create a new Nuxt layer 13 | 14 | If you look into the `dsr-frontends` template, you'll find the default Nuxt layer named `dsr`. This layer should remain untouched. To apply customizations, you should create a new Nuxt layer and import it in `nuxt.config.ts`. For more details, refer to the [composition guide](https://nuxt.com/docs/guide/going-further/layers). Besides, we’ve also created a customization layer named `example` within the frontend source code. You can rename this layer and modify its contents to suit your needs. 15 | -------------------------------------------------------------------------------- /resources/guidelines/code/store-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Store API 4 | position: 130 5 | 6 | --- 7 | 8 | # Store API 9 | 10 | ## Routes 11 | 12 | * Stop implementing the Sales Channel API. 13 | It will be deprecated in the 6.4 major release. 14 | Define API Controllers \(Routes\) as services. Use named Routes internally. 15 | * The class or each API method requires the attribute: `#[Route(defaults: [\Shopware\Core\PlatformRequest::ATTRIBUTE_ROUTE_SCOPE => [\Shopware\Core\Framework\Routing\StoreApiRouteScope::ID]])]`. 16 | * Decorator of response extends on `StoreApiResponse`. 17 | 18 | ## Page Loader 19 | 20 | * Routes represent a single functionality. 21 | * Controller/Pageloader only works with routes. 22 | * Controller/Pageloader can call multiple routes. 23 | * A route has to return a StoreApiResponse, to convert to JSON. 24 | * A route response can only contain one object. 25 | * The Storefront controller should never work with the repository again. It should be injected inside a route. 26 | -------------------------------------------------------------------------------- /guides/plugins/apps/app-sdks/javascript/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Official JavaScript SDK 4 | position: 10 5 | 6 | --- 7 | 8 | # JavaScript 9 | 10 | The App SDK for JavaScript abstracts and simplifies creating Shopware apps. The SDK uses JavaScript standardized Request/Response objects and therefore is supported to run in Node/Deno/Bun/Cloudflare Workers. 11 | 12 | The app SDK provides a context object that grants access to relevant information and services within the Shopware environment. This context is essential for interacting with Shopware's APIs, accessing database entities, and executing various operations. 13 | 14 | To ensure secure communication between the application and Shopware, this SDK supports signing mechanisms, allowing developers to validate the authenticity and integrity of requests and responses. 15 | 16 | It also includes an HTTP client that simplifies making API requests to Shopware endpoints. It provides methods for handling authentication, executing HTTP requests, and processing responses. 17 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/mail/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Mail 4 | position: 20 5 | 6 | --- 7 | 8 | # Mail 9 | 10 | Shopware Mail offers the ability to add mail data and configure mail templates for various email communications within the e-commerce platform. You can add relevant mail data such as transactional emails, order notifications, customer communication, marketing campaigns, or newsletters. These emails can be tailored to specific events or triggers, ensuring timely and personalized communication with customers. 11 | 12 | The plugin provides the functionality to create and customize these mail templates. Users can design and format the content of their emails, including text, images, logos, and dynamic variables, to personalize the messages. This allows for consistent branding and a professional appearance across all outgoing emails. 13 | 14 | By utilizing this plugin, businesses can effectively engage with their customers and keep them informed about order updates, promotions, or other relevant information. 15 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/sitemap/remove-sitemap-entries.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Remove sitemap entries 4 | position: 30 5 | 6 | --- 7 | 8 | # Remove Sitemap Entries 9 | 10 | ## Overview 11 | 12 | This guide covers how to remove URLs from the sitemap. 13 | 14 | ## By using the configuration 15 | 16 | To remove a URL from the sitemap, use the configuration setting `shopware.sitemap.excluded_urls` 17 | 18 | ```yaml 19 | shopware: 20 | sitemap: 21 | excluded_urls: 22 | - salesChannelId: '98432def39fc4624b33213a56b8c944d' 23 | resource: 'Shopware\Core\Content\Product\ProductEntity' 24 | identifier: 'd20e4d60e35e4afdb795c767eee08fec' 25 | ``` 26 | 27 | The `salesChannelId` is the ID of the sales channel from which you want to exclude the URL. 28 | The `resource` is the full class name of the entity from which you want to exclude the URL, for example, `Shopware\Core\Content\Product\ProductEntity`. 29 | The `identifier` is the entity's ID for which you want to exclude the URL. 30 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/sitemap/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Sitemap 4 | position: 50 5 | 6 | --- 7 | 8 | # Sitemap 9 | 10 | Shopware Sitemap offers the ability to add sitemaps and modify sitemap entries within the e-commerce platform. 11 | 12 | With the Sitemap plugin, you can create custom sitemaps to provide search engines with a structured overview of the website's content. These sitemaps can be tailored to specific requirements, allowing businesses to include relevant pages, categories, products, or other content sections based on their needs. 13 | 14 | Additionally, the plugin enables users to modify sitemap entries. This means they can customize the information included in the sitemap, such as URLs change or overriding SEO URLs. 15 | 16 | With this flexibility, businesses can ensure their website's content is efficiently crawled and indexed by search engines. Custom sitemaps and modified sitemap entries help improve the visibility and discoverability of the website, leading to better search engine rankings and increased traffic. 17 | -------------------------------------------------------------------------------- /products/cli/extension-commands/extract-meta-data.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Extracting Meta Data 4 | position: 4 5 | 6 | --- 7 | 8 | # Extracting Meta Data 9 | 10 | There are helpers in Shopware CLI to extract data of an extension. This is useful in your CI/CD pipeline to get the extension version or the changelog for the automated release. 11 | 12 | ## Extracting the version 13 | 14 | To extract the version of an extension, you can use the following command: 15 | 16 | ```bash 17 | shopware-cli extension get-version 18 | ``` 19 | 20 | The path can be absolute or relative to the current working directory. The command will output the version of the extension. 21 | 22 | ## Extracting the changelog 23 | 24 | To extract the changelog of an extension, you can use the following command: 25 | 26 | ```bash 27 | shopware-cli extension get-changelog 28 | ``` 29 | 30 | The path can be absolute or relative to the current working directory. The command will output the changelog of the extension. 31 | 32 | It will output always the English changelog. 33 | -------------------------------------------------------------------------------- /snippets/guide/app_database_setup.md: -------------------------------------------------------------------------------- 1 | The App Bundle ships with a basic Shop entity to store the shop information. You can extend this entity to store more information about your app if needed. 2 | 3 | Symfony configures doctrine to use PostgreSQL by default. Change the `DATABASE_URL` environment variable in your `.env` file if you want to use MySQL. 4 | You can also use SQLite by setting the `DATABASE_URL` to `sqlite:///%kernel.project_dir%/var/app.db` for development. 5 | 6 | After choosing your database engine, you need to require two extra composer packages. 7 | 8 | ```shell 9 | composer req symfony/maker-bundle migrations 10 | ``` 11 | 12 | And create your first migration using `bin/console make:migration` (which is using the `AbstractShop` Class) and apply it to your database with `bin/console doctrine:migrations:migrate`. 13 | 14 | 15 | -------------------------------------------------------------------------------- /.github/scripts/check-redirects.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script checks if the source URLs of the redirects in the .gitbook.yaml file are valid in terms of HTTP status code. Anything that is not a 404 is considered valid. 4 | 5 | GITBOOK_FILE=".gitbook.yaml" 6 | 7 | check_url() { 8 | local url=$1 9 | local status_code=$(curl --output /dev/null --silent --head --write-out "%{http_code}" "$url") 10 | if [ "$status_code" -eq 404 ]; then 11 | return 1 12 | else 13 | return 0 14 | fi 15 | } 16 | 17 | redirects=$(grep -E '^[[:space:]]*[^#[:space:]]+:[[:space:]]*[^#[:space:]]+$' "$GITBOOK_FILE") 18 | 19 | while IFS= read -r line; do 20 | source=$(echo "$line" | awk -F: '{print $1}' | xargs) 21 | full_source="https://developer.shopware.com/docs/$source" 22 | 23 | if [ -z "$source" ]; then 24 | echo "Invalid redirect: $line" 25 | continue 26 | fi 27 | 28 | if ! check_url "$full_source"; then 29 | echo "Invalid source URL: $full_source" 30 | else 31 | echo "Valid source URL: $full_source" 32 | fi 33 | done <<< "$redirects" 34 | -------------------------------------------------------------------------------- /.spellcheck.yml: -------------------------------------------------------------------------------- 1 | matrix: 2 | - name: Markdown 3 | aspell: 4 | lang: en 5 | dictionary: 6 | wordlists: 7 | - .wordlist.txt 8 | encoding: utf-8 9 | pipeline: 10 | - pyspelling.filters.markdown: 11 | markdown_extensions: 12 | - pymdownx.superfences: 13 | relaxed_headers: true 14 | - pyspelling.filters.html: 15 | comments: false 16 | ignores: 17 | - code 18 | - pre 19 | - pyspelling.filters.context: 20 | context_visible_first: true 21 | escapes: \\[\\`~] 22 | delimiters: 23 | - open: '(?s)^(?P *`{3,})$' 24 | close: '^(?P=open)$' 25 | - open: '(?P`+)' 26 | close: '(?P=open)' 27 | - open: '(?P# {"+)' 28 | close: '(?P=open)' 29 | - open: '# {' 30 | close: '}' 31 | sources: 32 | - '**/*.md|!resources/references/adr/*|!resources/guidelines/code/core/*' 33 | default_encoding: utf-8 34 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/employee-management/guides/creating-own-permissions-via-app.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Create permissions via App 4 | position: 40 5 | 6 | --- 7 | 8 | # Create Permissions via App 9 | 10 | The App needs to use the API to extend and create permissions. Therefore, the apps can send a request to the Store API and pass the required parameters to the `/store-api/permission` route. 11 | 12 | After doing that, the already existing permissions created by Shopware or added by plugin, will be merged with the permission created by apps. 13 | 14 | It is important to note that permissions have a unique name. So a permission named `employee.read` can neither be added by apps nor by plugins, because this name is already in use. So a new name can better be added by making use of snippets. 15 | 16 | ## Snippets 17 | 18 | The Snippet for the new permissions has to be added to the following namespace: `b2b.role-edit.permissions.[name]`. The placeholder has to be replaced by the name of the new permission, e.g., `b2b.role-edit.permissions.order.delete`. 19 | -------------------------------------------------------------------------------- /guides/hosting/configurations/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Configurations 4 | position: 20 5 | 6 | --- 7 | 8 | # Configurations 9 | 10 | ## Overview 11 | 12 | When running Shopware 6 there are various configuration options you can use to customize your installation. 13 | 14 | ## Configuration 15 | 16 | The configuration for Shopware 6 resides in the general bundle configuration: 17 | 18 | ```text 19 | 20 | └── config 21 | └── packages 22 | └── shopware.yaml 23 | ``` 24 | 25 | If you want to aim at a specific environment, you can create a configuration file for that as follows: 26 | 27 | ```text 28 | 29 | └── config 30 | └── packages 31 | └── dev 32 | └── mailer.yaml 33 | ``` 34 | 35 | ```text 36 | 37 | └── config 38 | └── packages 39 | └── prod 40 | └── mailer.yaml 41 | ``` 42 | 43 | For more information on environment-specific configurations, check out the [Symfony Configuration Environments](https://symfony.com/doc/current/configuration.html#configuration-environments) section. 44 | -------------------------------------------------------------------------------- /guides/plugins/themes/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Themes 4 | position: 20 5 | 6 | --- 7 | 8 | # Themes 9 | 10 | A Shopware theme is an extension (plugin or app) that enables you to customize and modify the appearance and design of your online storefront. You can change the layout, styling, typography, colors, images, and other visual elements to match your brand identity and desired user experience. 11 | 12 | ```text 13 | Extensions 14 | ├── Plugin 15 | │ └── can include a Theme (not for Cloud) 16 | └── App 17 | └── can include a Theme (Cloud-ready) 18 | ``` 19 | 20 | Tasks that themes enable include: 21 | 22 | * template overrides 23 | * custom styles 24 | * configuration interfaces 25 | * control the order in which styles and templates are loaded 26 | 27 | ::: info 28 | Note that a plugin can also override templates. 29 | ::: 30 | 31 | To get started with your first theme, follow our [Theme Base Guide](theme-base-guide). 32 | 33 | For more on how themes relate to plugins and apps, see [Plugins and Apps vs Themes](./differences-plugins-and-apps-vs-themes.md). 34 | -------------------------------------------------------------------------------- /resources/guidelines/code/cart-process.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Cart Process 4 | position: 30 5 | 6 | --- 7 | 8 | # Cart Process 9 | 10 | * Within `\Shopware\Core\Checkout\Cart\CartProcessorInterface::process`, no queries may be executed because this method is executed several times in a row to resolve the dependencies of the elements in the shopping cart. 11 | * The `\Shopware\Core\Checkout\Cart\CartDataCollectorInterface::collect` method must always check if the required data has already been loaded. This is to avoid having to execute unnecessarily many queries on the database. The loaded data will be appended to the passed *CartDataCollection*. 12 | * The creation of line items must always take place via a `LineItemFactoryHandler` class. 13 | * All price calculations must take place via an appropriate `PriceCalculator`. All price calculators are stored inside the `Shopware\Core\Checkout\Cart\Price` class. 14 | * All shopping cart functions must be mapped via a corresponding store API route. The routes are located in the `Shopware\Core\Checkout\Cart\SalesChannel` namespace. 15 | -------------------------------------------------------------------------------- /resources/guidelines/code/pageloader.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Page Loader 4 | position: 80 5 | 6 | --- 7 | 8 | # Page Loader 9 | 10 | * Pageloaders must be divided into appropriate domains that represent the different sections of the Storefront - "products", "account", etc. 11 | * Each page loader must have an abstract class from which it derives ( See [decoration pattern](../../references/adr/2020-11-25-decoration-pattern.md)). This pattern can be used to completely replace the page loader in a project. 12 | * Each page loader has a page object to return, in which all the necessary information for the page is present. 13 | * At the end of each pageloader, an individual `PageLoaded` event is thrown. This event can be used to provide further data by third-party developers. 14 | * Page loaders are not allowed to work directly with repositories but are only allowed to load data via the Store API. This is to ensure that all storefront functionalities can also be accessed via the Store API. 15 | * A Page object must always extend from the base `\Shopware\Storefront\Page\Page` class. 16 | -------------------------------------------------------------------------------- /products/paas/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: PaaS 4 | position: 10 5 | --- 6 | 7 | # Introduction to PaaS 8 | 9 | While both [Shopware PaaS Native](./shopware/) and [Shopware PaaS](./shopware-paas/) offer cloud-based environments for development, they differ in specialization and flexibility: 10 | 11 | - **Shopware PaaS**: A generic PaaS provider, [Shopware PaaS](./shopware-paas/) supports various applications and multiple cloud providers, giving developers the flexibility to define their infrastructure as code. However, this requires customers to manage more aspects of infrastructure and setup. 12 | 13 | - **Shopware PaaS Native**: Optimized solely for Shopware, this platform provides a tightly integrated and controlled environment on AWS. This focus ensures higher stability, with Shopware managing all underlying configurations, enabling developers to concentrate on application development. 14 | 15 | By using [Shopware PaaS Native](./shopware/), teams benefit from a unified, robust platform that simplifies the development lifecycle, enhances performance, and enables faster innovation. 16 | -------------------------------------------------------------------------------- /guides/plugins/themes/theme-base-guide.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Theme Base Guide 4 | position: 10 5 | 6 | --- 7 | 8 | # Theme Base Guide 9 | 10 | A theme gives you the ability to extend/change the visual appearance of the Storefront via styling the SCSS/CSS and adjusting twig templates. You can also provide JavaScript with your theme to change how the Storefront behaves in the browser. For example, JavaScript is used in Shopware to open the offcanvas shopping-cart. Now, as you might know, Shopware comes with a default theme, to make things a bit easier. The default theme in Shopware is built on top of Bootstrap 5, style-wise. So everything you can do with Bootstrap, you can do with the Shopware Storefront as well. 11 | 12 | Another handy capability is the theme configuration: As a theme developer you can define variables which can be configured by the shop owner in the Administration. Those variables are accessible in your theme and let you implement powerful features. 13 | 14 | ## Next steps 15 | 16 | Now that you know what you can do with themes, the next steps would be to [create themes](create-a-theme). 17 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/seo/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: SEO 4 | position: 40 5 | 6 | --- 7 | 8 | # SEO 9 | 10 | The Shopware SEO feature offers comprehensive tools to optimize the search engine visibility of your e-commerce platform. 11 | 12 | ## SEO URLs 13 | 14 | You can create custom SEO URLs for product pages, categories, content pages, and other relevant sections of the website. The plugin allows businesses to customize meta tags for each page, including meta titles, descriptions, and keywords. This enables users to optimize the on-page SEO elements, providing search engines with relevant information about the content of the page. 15 | 16 | 17 | 18 | ## Robots configuration 19 | 20 | Shopware provides full support for `robots.txt` configuration, including all standard directives, user-agent blocks, and extensibility through events. You can customize how search engine crawlers interact with your shop by extending the `robots.txt` parsing and generation. 21 | 22 | 23 | -------------------------------------------------------------------------------- /guides/plugins/apps/administration/adding-snippets.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Add translations for apps 4 | position: 30 5 | --- 6 | 7 | # Adding translations for apps 8 | 9 | Adding snippets to the administration works the same way for plugins and apps. The only difference is the file structure and that apps are not allowed to override existing snippet keys. The only thing to do, therefore, is to create new files in the following directory: `/Resources/app/administration/snippet` 10 | Additionally, you need JSON files for each language you want to support, using the respective language locale (e.g., `de.json`, `en.json`). You can also include patch files for dialects, such as `en-US.json`, to provide country-specific translations. 11 | 12 | For more details on selecting a fallback language and structuring your snippet files, see the [Fallback Languages guide](../../../../concepts/translations/fallback-language-selection.md). 13 | 14 | Since everything else works the same, please refer to our [Adding translations for plugins](../../plugins/administration/templates-styling/adding-snippets) guide for more information. 15 | -------------------------------------------------------------------------------- /snippets/config/app/tax.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PaymentApp 6 | 7 | 8 | 9 | 10 | 11 | myCustomTaxProvider 12 | 13 | My custom tax provider 14 | 15 | 1 16 | 17 | https://tax-provider.app/provide-taxes 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/references/adr/2022-11-16-deprecate-csrf.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deprecate the storefront CSRF implementation 3 | date: 2022-11-16 4 | area: storefront 5 | tags: [csrf, security, storefront] 6 | --- 7 | 8 | # Deprecate the storefront CSRF implementation 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2022-11-16-deprecate-csrf.md) 13 | ::: 14 | 15 | ## Context 16 | 17 | * With browsers evolving and dropping support for older browser in 6.5 we have wide support for SameSite cookies. 18 | * The current CSRF implementation adds a lot of complexity to all forms and ajax calls in the Storefront. 19 | * The CSRF protection does not add a great improvement in security due to the SameSite strategy. 20 | 21 | ## Decision 22 | 23 | * We remove the CSRF protection in favor of SameSite cookies which are used and prevent CSRF attacks already. 24 | 25 | ## Consequences 26 | 27 | * All CSRF implementations in the Storefront will be removed. 28 | -------------------------------------------------------------------------------- /guides/plugins/apps/app-sdks/javascript/04-signing.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Signing 4 | position: 40 5 | 6 | --- 7 | 8 | # Signing of responses 9 | 10 | The Shopware App System requires you to sign your responses to the Shopware server. 11 | 12 | The signing is required for all responses that are sent to the Shopware server. The signature is used to verify the authenticity of the response and to ensure that the response was not tampered with. 13 | 14 | To sign the response, you can call the signer with `signResponse` method. The signer will sign the response with the provided shop. 15 | 16 | ```php 17 | import { AppServer } from '@shopware-ag/app-server-sdk' 18 | 19 | const app = new AppServer(/** ... */); 20 | 21 | // Or you get it from the context resolver 22 | const shop = await app.repository.getShopById('shop-id'); 23 | 24 | const response = new Response('Hello World', { 25 | headers: { 26 | 'Content-Type': 'text/plain', 27 | }, 28 | }); 29 | 30 | const signedResponse = await app.signer.signResponse(response, shop); 31 | ``` 32 | 33 | Next, we will look into the [Making HTTP requests to the Shop](./05-http-client). 34 | -------------------------------------------------------------------------------- /products/cli/shopware-account-commands/authentication.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Authentication 4 | position: 1 5 | 6 | --- 7 | 8 | # Authentication 9 | 10 | To interact with the Shopware Account API, you need to authenticate yourself. 11 | 12 | For this, you need to log in using: 13 | 14 | ```bash 15 | shopware-cli account login 16 | ``` 17 | 18 | and it will ask you interactively for your credentials. 19 | 20 | For CI/CD pipelines, you should pass `SHOPWARE_CLI_ACCOUNT_EMAIL` and `SHOPWARE_CLI_ACCOUNT_PASSWORD` as environment variables and call directly the command you want to use. 21 | 22 | ::: info 23 | For CI/CD tasks you should create a dedicated Shopware Account with limited access to the Shopware Store. 24 | ::: 25 | 26 | ## Multiple companies 27 | 28 | A single Shopware Account can be part of multiple companies. You can only interact with one company at a time. 29 | 30 | You can use the following commands to list all companies you have access to: 31 | 32 | ```bash 33 | shopware-cli account company list 34 | ``` 35 | 36 | Next, select the active company with: 37 | 38 | ```bash 39 | shopware-cli account company use 40 | ``` 41 | -------------------------------------------------------------------------------- /products/paas/shopware-paas/cli-setup.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: PaaS CLI Setup 4 | position: 10 5 | 6 | --- 7 | 8 | # PaaS CLI Setup 9 | 10 | The PaaS CLI is your tool to connect with your PaaS environment, push changes, trigger deployments, etc. 11 | 12 | ## Download and install 13 | 14 | To install PaaS CLI, run the following command: 15 | 16 | ```sh 17 | curl -sfS https://cli.shopware.com/installer | php 18 | ``` 19 | 20 | When you run the PaaS CLI for the first time, it will ask you to log in via your browser. 21 | 22 | You can also generate an SSH key manually and add it in the **My profile > SSH Keys** section of your [PaaS Console](https://console.shopware.com/). 23 | 24 | ::: info 25 | **Set up SSH keys** 26 | 27 | If you are unsure of how to create SSH keys, please follow [this tutorial](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) provided by GitHub. 28 | ::: 29 | 30 | ## Authenticate 31 | 32 | Next, you need to authenticate your PaaS CLI. This can be done through your browser. Just run the following command and follow the instructions: 33 | 34 | ```sh 35 | shopware 36 | ``` 37 | -------------------------------------------------------------------------------- /products/paas/shopware-paas/fastly.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Fastly 4 | position: 80 5 | 6 | --- 7 | 8 | # Fastly 9 | 10 | Fastly allows Shopware to store the HTTP Cache at the nearest edge server to the end customer. This saves a lot of resources as the cached responses don't reach the actual application, and it decreases the response time drastically worldwide. Another benefit is that the Redis cache is not used anymore and will have less cache items. 11 | 12 | ## Setup 13 | 14 | ::: info 15 | Fastly is supported in Shopware versions 6.4.11 or newer. 16 | ::: 17 | 18 | 1. Make sure `FASTLY_API_TOKEN` and `FASTLY_SERVICE_ID` are set in the environment or contact the support when they are missing. 19 | 2. Install the Fastly Composer package using `composer req fastly`. 20 | 3. Disable caching in the `.platform/routes.yaml`. 21 | 4. Push the new config and Fastly gets enabled. 22 | 23 | ::: info 24 | **Enable Fastly Soft Purges** 25 | 26 | Make sure your Fastly configuration has [soft purges](https://developer.shopware.com/docs/guides/hosting/infrastructure/reverse-http-cache.html#fastly-soft-purge) enabled to mitigate the impact of large-scale cache invalidations. 27 | 28 | ::: 29 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/customization/branding.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Branding Customization 4 | position: 10 5 | 6 | --- 7 | ::: warning 8 | All customization instructions will refer to changes made within your customization layer folder. 9 | ::: 10 | 11 | # Branding Customization 12 | 13 | ## Favicon 14 | 15 | - Create `public` folder inside your layer (if missing). 16 | 17 | - Place your favicon inside the `public` folder and ensure it is named `favicon.ico`. 18 | 19 | ## Web application title 20 | 21 | - Create `nuxt.config.ts` inside your layer (if missing). 22 | 23 | - Replace "Your app name" with your app's name and add the following code: 24 | 25 | ```js 26 | app: { 27 | head: { 28 | title: 'Your app name' 29 | } 30 | } 31 | ``` 32 | 33 | ## Theme color 34 | 35 | - Create `uno.config.ts` inside your layer (if missing). 36 | 37 | - For example, to change the primary color to `#000000`, add the following code: 38 | 39 | ```js 40 | theme: { 41 | colors: { 42 | primary: { 43 | DEFAULT: '#000000' 44 | } 45 | } 46 | } 47 | ``` 48 | 49 | - Refer to the `uno.config.ts` file in the dsr layer to understand the key structure for overriding colors. 50 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/organization-unit/guides/how-to-identify-organization-from-context.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: How to identify the organization unit from the context 4 | position: 50 5 | 6 | --- 7 | 8 | # How to identify the organization unit from the context 9 | 10 | To determine the organization unit linked to an employee, you can retrieve the employee entity from the sales channel context. This entity includes a reference to the organization the employee belongs to. 11 | 12 | Here’s an example: 13 | 14 | ```php 15 | ... 16 | $employee = $context->getCustomer()?->getExtension(SalesChannelContextFactoryDecorator::CUSTOMER_EMPLOYEE_EXTENSION); 17 | 18 | if (!$employee instanceof EmployeeEntity) { 19 | return; 20 | } 21 | 22 | $organizationId = $employee->get('organizationId'); 23 | ... 24 | } 25 | ``` 26 | 27 | This code checks whether the current customer has an employee extension. If it does, it retrieves the employee entity and then accesses the `organizationId` property to get the ID of the organization unit associated with that employee. 28 | You can use this `organizationId` to load data related to the organization or to control what the employee is allowed to access. 29 | -------------------------------------------------------------------------------- /resources/references/administration-reference/directives.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Directives 4 | position: 30 5 | 6 | --- 7 | 8 | # Directives reference 9 | 10 | This is an overview of all the directives registered globally to Vue. 11 | Directives are the same as normally in Vue. Checkout the [Using directives](../../../guides/plugins/plugins/administration/mixins-directives/adding-directives.md) article 12 | or refer to the [directives](https://github.com/shopware/shopware/tree/trunk/src/Administration/Resources/app/administration/src/app/directive) folder in the GIT repository. 13 | 14 | ## Overview of directives 15 | 16 | | Name | Task | 17 | |--------------|-------------------------------------------------------------| 18 | | `autofocus` | Focuses an `` in an element on insertion. | 19 | | `dragdrop` | Enables the drag and drop functionality of the CMS. | 20 | | `popover` | Directive for automatic edge detection of the element place | 21 | | `responsive` | Adds methods to add responsive element classes | 22 | | `tooltip` | Provides utility functions to display tooltips. | 23 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/shopping-lists/concepts/entities-and-schema.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Entities & Schema 4 | position: 20 5 | 6 | --- 7 | 8 | # Entities and schema 9 | 10 | ## Entities 11 | 12 | ### Shopping Lists 13 | 14 | Shopping lists represent a list of products prepared for a customer or a sales channel. They show basic information about the product list, such as the name, customer, sales channel and so on. 15 | 16 | ### Line item 17 | 18 | he Shopping List Line Item represents individual products within a shopping list. Each product in the shopping list is considered a line item. 19 | 20 | ## Schema 21 | 22 | ```mermaid 23 | erDiagram 24 | b2b_components_shopping_list { 25 | uuid id PK 26 | uuid customer_id FK 27 | uuid employee_id FK 28 | uuid sales_channel_id FK 29 | string name 30 | boolean active 31 | json custom_fields 32 | } 33 | b2b_components_shopping_list_line_item { 34 | uuid id PK 35 | uuid b2b_components_shopping_list_id FK 36 | uuid product_id FK 37 | int quantity 38 | } 39 | b2b_components_shopping_list_line_item o{--|| b2b_components_shopping_list : "has line items" 40 | ``` 41 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Welcome to the official Shopware 6 Developer Documentation 3 | --- 4 | 5 | # Home 6 | 7 | Let us help you guide through the landscape of knowledge for Shopware 6. This documentation is organised in order to facilitate knowledge for different **products**, **topics** and **depths** of interest. 8 | 9 | The two main sections **concepts** and **guides** assist you to navigate the documentation according to your needs. 10 | 11 | Whereas **Concepts** convey the ideas, inner workings and architectural considerations behind our product, **Guides** provide explicit examples, step-by-step tutorials that deal with specific tasks. 12 | 13 | These two sections are complemented by the **References**, which contain structured code references, lists of flags, commands, endpoints which are useful for development. 14 | 15 | Visit the [academy](https://academy.shopware.com/collections?category=developer-sw6) for video content. If you have any questions left, you can always ask them on [StackOverflow](https://stackoverflow.com/questions/tagged/shopware6?tab=Newest) or join our awesome community on [Discord](https://discord.com/channels/1308047705309708348/1309107911175176217). 16 | 17 | ![Readme](assets/readme-splash.png) 18 | -------------------------------------------------------------------------------- /concepts/extensions/plugins-concept.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Plugins 4 | position: 20 5 | 6 | --- 7 | 8 | # Plugins 9 | 10 | Plugins in Shopware are essentially an extension of [Symfony bundles](https://symfony.com/doc/current/bundles.html#creating-a-bundle). Such bundles and plugins can provide their own resources like assets, controllers, services, or tests. To reduce friction when programming plugins for Shopware, there is an abstract [Base class](../../guides/plugins/plugins/plugin-base-guide#create-your-first-plugin), which every plugin extends from the plugin base class. In this class, there are helper methods to initialize parameters like the plugin's name and root path in the dependency injection container. Also, each plugin is represented as a Composer package and may for example, define dependencies this way. 11 | 12 | Plugins are deeply integrated into Shopware. You can do nearly everything with plugins, like "new User Provider" or "custom Search Engine". 13 | 14 | ::: warning 15 | Plugins are not compatible with Shopware cloud stores. To extend Shopware cloud stores, you need an [App](apps-concept). 16 | ::: 17 | 18 | Learn more about plugins from the [Plugin base guide](../../guides/plugins/plugins/plugin-base-guide) 19 | -------------------------------------------------------------------------------- /products/cli/shopware-account-commands/configure-composer-repository.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Configure Composer Repository 4 | position: 4 5 | 6 | --- 7 | 8 | # Configure composer repository 9 | 10 | To install extensions from the Shopware Store, you need to configure the Composer repository in your `composer.json` file. Shopware CLI can configure this for you automatically. 11 | 12 | First, make sure you have access to the given Shop in Shopware Account. You can check this with the following command: 13 | 14 | ```bash 15 | shopware-cli account merchant shop list 16 | ``` 17 | 18 | If you don't see the shop you want to use, you need to switch to the correct company with the following command. Check the [Authentication](./authentication.md) guide for more information. 19 | 20 | To create a `auth.json` file with the Composer repository configuration, you can use the following command: 21 | 22 | ::: info 23 | You can also use the tab completion in the terminal to get the domains of the shops you have access to. 24 | ::: 25 | 26 | ```bash 27 | shopware-cli account merchant shop configure-composer 28 | ``` 29 | 30 | This will create `auth.json` and append the Composer repository configuration to your `composer.json` file. 31 | -------------------------------------------------------------------------------- /resources/references/testing-reference/e2e-commands.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: E2E Commands 4 | position: 20 5 | 6 | --- 7 | 8 | # E2E Commands 9 | 10 | | Command | Description | 11 | |:--------------------------------------|:-----------------------------------------------------------------| 12 | | `bin/console e2e:restore-db` | Sets Shopware back to state of the backup | 13 | | `APP_ENV=e2e bin/console e2e:dump-db` | Creates a backup of Shopware's database | 14 | | `composer run e2e:setup` | Prepares Shopware installation and environment for Cypress usage | 15 | | `composer run e2e:open` | Opens Cypress' e2e tests runner | 16 | | `composer run e2e:prepare` | Install dependencies and prepare database for Cypress usage | 17 | | `composer e2e:cypress -- run --spec="cypress/e2e/administration/**/*.cy.js"` | Runs Cypress' admin e2e tests in CLI | 18 | | `composer e2e:cypress -- run --spec="cypress/e2e/storefront/**/*.cy.js"` | Runs Cypress' storefront e2e tests in CLI | 19 | -------------------------------------------------------------------------------- /guides/plugins/apps/app-sdks/php/04-signing.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Signing 4 | position: 40 5 | 6 | --- 7 | 8 | # Signing of responses 9 | 10 | The Shopware App System requires you to sign your responses to the Shopware server. 11 | 12 | The signing is required for the following actions: 13 | 14 | * ActionButton 15 | * TaxProvider 16 | * Payment 17 | 18 | To sign the response, you need to create a `ResponseSigner` and call the `signResponse` method with our PSR 7 Response. 19 | 20 | ```php 21 | $app = new AppConfiguration('Foo', 'test', 'http://localhost:6001/register/callback'); 22 | // for a repository to save stores implementing \Shopware\App\SDK\Shop\ShopRepositoryInterface, see FileShopRepository as an example 23 | $repository = ...; 24 | 25 | // Create a psr 7 request or convert it (HttpFoundation Symfony) 26 | $psrRequest = ...; 27 | 28 | $shopResolver = new \Shopware\App\SDK\Shop\ShopResolver($repository); 29 | 30 | $shop = $shopResolver->resolveShop($psrRequest); 31 | 32 | // do something 33 | $response = ....; 34 | 35 | $signer = new \Shopware\App\SDK\Authentication\ResponseSigner(); 36 | $signer->signResponse($psrResponse, $shop); 37 | ``` 38 | 39 | Next, we will look into the [Making HTTP requests to the Shop](./05-http-client). 40 | -------------------------------------------------------------------------------- /snippets/config/app/shipping-methods.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | NameOfYourShippingMethodApp 7 | 8 | 9 | 10 | 11 | 12 | NameOfYourFirstShippingMethod 13 | First shipping method 14 | 15 | 16 | 17 | c8864e36a4d84bd4a16cc31b5953431b 18 | From 2 to 4 days 19 | 2 20 | 4 21 | day 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /guides/plugins/plugins/content/cms/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: CMS 4 | position: 10 5 | 6 | --- 7 | 8 | # CMS 9 | 10 | In general, Shopware CMS creates and manages content using blocks and elements. 11 | 12 | The CMS plugin allows you to easily add and organize these CMS blocks, which are reusable sections of content that can be placed on multiple pages. You can customize the appearance and layout of these blocks. To create engaging and visually appealing pages within these blocks, you can add and configure various content elements such as text, images, videos, sliders, and more. Additionally, the CMS plugin enables you to add data to their content elements, such as product information, categories, or dynamic content from APIs. 13 | 14 | Furthermore, the CMS feature core functions can be accessed and managed through the Shopware Admin SDK. This provides developers with tools and APIs to interact with the CMS functionality, allowing for more advanced customization. 15 | 16 | Overall, the plugin facilitates you to create, customize, and manage engaging content on your website. Through blocks, elements, and the flexibility the Admin SDK provides, businesses can create visually appealing pages with dynamic and relevant content to enhance the user experience. 17 | -------------------------------------------------------------------------------- /products/extensions/advanced-search/Search-and-suggest-routes.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Search and suggest routes 4 | position: 90 5 | 6 | --- 7 | 8 | # Search and Suggest Routes 9 | 10 | @Refer: `\Shopware\Commercial\AdvancedSearch\Domain\Search\ProductSearchRouteDecorator` 11 | 12 | `ProductSearchRoute` is decorated, so when searching for products from the Storefront, a `multiSearchResult` extension is added to the search product listing result. This extension includes all the search results for each Elasticsearch definition with the tag `advanced_search.supported_definition` with the given search term. 13 | 14 | The same approach applies to `ProductSuggestRoute`. The only difference is that we added the completion search result as another extension `completionResult` to the search product listing result. 15 | 16 | @Refer: `\Shopware\Commercial\AdvancedSearch\Domain\Suggest\ProductSuggestRouteDecorator` 17 | 18 | You can also subscribe to the event `\Shopware\Commercial\AdvancedSearch\Event\MultiContentSearchCriteriaEvent` or `\Shopware\Commercial\AdvancedSearch\Event\MultiContentSuggestCriteriaEvent` to adjust the search criteria. 19 | 20 | This decoration approach comes with the benefit that the caching mechanism already works for the decorated search routes. 21 | -------------------------------------------------------------------------------- /snippets/config/app/cookies-group.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ExampleAppWithCookies 5 | 1.0.0 6 | 7 | 8 | 9 | 10 | example-app-with-cookies.cookie-group.name 11 | example-app-with-cookies.cookie-group.description 12 | 13 | 14 | my-cookie 15 | example-app-with-cookies.my-cookie.name 16 | example-app-with-cookies.my-cookie.description 17 | a static value for the cookie 18 | 19 | 1 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/configuration/plugin-config.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Plugin Configuration 4 | position: 20 5 | 6 | --- 7 | 8 | # Plugin Configuration 9 | 10 | There are a lot of settings on the configuration page, but most of them are already filled by default. However, there are some settings that need to be set up. 11 | 12 | ## Navigate to the configuration page 13 | 14 | Open Shopware CMS, select **Marketing** > **Digital Sales Rooms** > **Configuration** 15 | 16 | ![ ](../../../assets/products-digitalSalesRooms-configuration.png) 17 | 18 | ## Fill the settings 19 | 20 | ### Appointments 21 | 22 | - *Available domains* - This select box shows the list of domains of all sales channels. You should choose the *Digital Sales Rooms* domains from [this section](./domain-config.md) 23 | 24 | ### Video and Audio 25 | 26 | - *API base url* - use value `https://api.daily.co/v1/` 27 | - *API key* - get the value from [this section](../setup-3rd-party/realtime-video-dailyco.md#get-the-api-key) 28 | 29 | ### Realtime service 30 | 31 | - *Hub url* 32 | - *Hub public url* 33 | - *Hub subscriber secret* 34 | - *Hub publisher secret* 35 | 36 | Get the value of all these from [this section](../setup-3rd-party/realtime-service-mercure.md#setup-via-stackhero-recommended) 37 | -------------------------------------------------------------------------------- /.github/workflows/watcher.yml: -------------------------------------------------------------------------------- 1 | name: Check shopware files for changes 2 | on: 3 | pull_request: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | check-files: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | - run: | 12 | ./.github/scripts/file-watcher.sh 13 | id: watcher 14 | continue-on-error: true 15 | - name: Send custom JSON data to Slack workflow 16 | if: steps.watcher.outcome != 'success' 17 | id: slack 18 | uses: slackapi/slack-github-action@v1.24.0 19 | with: 20 | payload: | 21 | { 22 | "text": "Text: GitHub Action build result: ${{ job.status }}", 23 | "blocks": [ 24 | { 25 | "type": "section", 26 | "text": { 27 | "type": "mrkdwn", 28 | "text": ":ladybug: Failed file watcher with status '${{ steps.watcher.outcome }}': Please check ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" 29 | } 30 | } 31 | ] 32 | } 33 | env: 34 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFICATIONS_WEBHOOK }} 35 | SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK 36 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/configuration/config-with-cli.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Configuration with CLI 4 | position: 30 5 | 6 | --- 7 | 8 | ## Configuration with CLI 9 | 10 | Using the CLI for configuration is significantly faster than performing each setup manually. By executing the below command, you streamline the entire process, ensuring that all necessary configurations are applied efficiently and correctly in one go. 11 | 12 | Make sure you are in the root folder of the plugin, run: 13 | 14 | ```bash 15 | composer dsr:config 16 | ``` 17 | 18 | This command will automatically execute the following setup commands (If you prefer, you can also execute each setup command separately to configure specific parts individually): 19 | 20 | 1. **Domain Setup** 21 | - `composer dsr:domain-setup` 22 | - This command sets up the necessary domain configurations for **Digital Sales Rooms**. 23 | 24 | 2. **Daily.co Setup** 25 | - `composer dsr:daily-setup` 26 | - This command sets up Daily.co, which is essential for real-time video/audio calling within **Digital Sales Rooms**. 27 | 28 | 3. **Mercure Setup** 29 | - `composer dsr:mercure-setup` 30 | - This command sets up the Mercure hub, which is essential for real-time updates and notifications within **Digital Sales Rooms**. 31 | -------------------------------------------------------------------------------- /products/extensions/b2b-components/quotes-management/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Quotes Management 4 | position: 10 5 | 6 | --- 7 | 8 | # Quotes Management 9 | 10 | The Quote Management feature streamlines the B2B partnership process by enabling partners to seamlessly request and accept quotes without the need for time-consuming manual negotiations. The process begins with B2B partners populating their cart with desired products, after which they can initiate a quote request based on the contents of their cart. Once the request is submitted, B2B merchants have the ability to review the quote within the administration system. They can also apply discounts to individual product items within the quote to tailor the offer to the partner's needs. Subsequently, the modified quote is sent to the B2B partners for their consideration. 11 | 12 | Partners are free to accept or decline the offer, and upon acceptance, they are guided through the seamless checkout process. The system then automatically generates an order based on the accepted quote, optimizing efficiency and ensuring a smooth transition from negotiation to transaction. This feature revolutionizes B2B interactions by reducing the need for extensive manual discussions and fostering a more efficient and collaborative environment for both partners and merchants. 13 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/customization/i18n.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: I18n Customization 4 | position: 20 5 | 6 | --- 7 | ::: warning 8 | All customization instructions will refer to changes made within your customization layer folder. 9 | ::: 10 | 11 | # I18n Customization 12 | 13 | This guide will walk you through the process of customizing the internationalization (i18n) setup in your Nuxt 3 project using the Nuxt layer concept. By using this method, you can extend and override the default i18n functionality to meet your specific requirements without modifying the core files. 14 | 15 | ## Configure i18n 16 | 17 | Configure the i18n settings in your `nuxt.config.ts` file. This configuration defines the language directory and any specific language configurations you want to override. 18 | 19 | Add the following configuration to `nuxt.config.ts`: 20 | 21 | ```js 22 | modules: [ 23 | "@nuxtjs/i18n", 24 | ], 25 | i18n: { 26 | langDir: "./i18n/src/langs/", 27 | ...i18nConfig, 28 | }, 29 | ``` 30 | 31 | ## Create the i18n Folder in the custom layer 32 | 33 | To customize the i18n functionality, we need to create a new folder structure in your custom layer. You will mirror the default layer's structure, but only create the files you need to override. 34 | 35 | Take a look on `example` layer to understand the structure. 36 | -------------------------------------------------------------------------------- /.github/workflows/validate-external-links.yml: -------------------------------------------------------------------------------- 1 | name: External link validation 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: 0 11 * * * 7 | 8 | jobs: 9 | linkvalidator: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | issues: write 13 | steps: 14 | - uses: actions/checkout@v4 15 | 16 | - name: lychee Link Checker 17 | id: lychee 18 | uses: lycheeverse/lychee-action@v2 19 | with: 20 | fail: false 21 | args: --retry-wait-time 10 --max-retries 3 --timeout 30 --accept=200,403,429,408 -s "https" "**/*.html" "**/*.md" "**/*.txt" "**/*.json" --exclude "https://github.com/\[your*" --exclude "https://localhost:9200" 22 | 23 | - name: Find Link Checker Issue 24 | uses: micalevisk/last-issue-action@v2 25 | id: known-issue 26 | with: 27 | state: open 28 | labels: | 29 | link-checker 30 | 31 | - name: Create Issue From File 32 | if: steps.lychee.outputs.exit_code != 0 && steps.known-issue.outputs.has-found != 'true' 33 | uses: peter-evans/create-issue-from-file@v5 34 | with: 35 | issue-number: "${{ steps.known-issue.outputs.issue-number }}" 36 | title: Link Checker Report 37 | content-filepath: ./lychee/out.md 38 | labels: link-checker 39 | -------------------------------------------------------------------------------- /products/paas/shopware-paas/composable-frontends/blackfire.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Blackfire Continuous Profiling of Nuxt.js 4 | position: 20 5 | 6 | --- 7 | 8 | # Blackfire Continuous Profiling of Nuxt.js 9 | 10 | It's possible to enable [Blackfire Continuous Profiling](https://www.blackfire.io/continuous-profiler/) on a frontend based on Nuxt.js. 11 | 12 | 1. Install the Blackfire Node.js Lib: `npm install @blackfireio/node-tracing` 13 | 2. Add the environment variable `BLACKFIRE_ENABLE=1` 14 | 3. Add `./server/plugins/blackfire.ts`: 15 | 16 | ```ts 17 | // server/plugins/blackfire.ts 18 | export default defineNitroPlugin(async () => { 19 | if (process.env.BLACKFIRE_ENABLE !== '1') return; 20 | 21 | try { 22 | // Works in ESM: dynamically import and handle both default/named exports 23 | const mod = await import('@blackfireio/node-tracing'); 24 | const Blackfire: any = (mod as any).default || mod; 25 | 26 | Blackfire.start({ 27 | appName: 28 | process.env.BLACKFIRE_APP_NAME || 'shopware-frontend', 29 | // durationMillis: 45000, 30 | // cpuProfileRate: 100, 31 | // labels: { service: 'frontend', framework: 'nuxt3' }, 32 | }); 33 | 34 | console.info('[blackfire] node-tracing started'); 35 | } catch (e) { 36 | console.error('[blackfire] failed to start node-tracing', e); 37 | } 38 | }); 39 | ``` 40 | -------------------------------------------------------------------------------- /guides/hosting/configurations/framework/samesite-protection.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: SameSite protection 4 | position: 10 5 | 6 | --- 7 | 8 | # SameSite protection 9 | 10 | ::: info 11 | This feature has been introduced with Shopware version 6.4.3.1 12 | ::: 13 | 14 | ## Overview 15 | 16 | The [SameSite configuration](https://symfony.com/doc/current/reference/configuration/framework.html#cookie-samesite) comes with the Symfony FrameworkBundle and supersedes the removed `sw_csrf` Twig function. 17 | It is widely [available](https://caniuse.com/same-site-cookie-attribute) in modern browsers and is set to `lax` per default. 18 | 19 | For more information, refer to [SameSite cookies site](https://web.dev/articles/samesite-cookies-explained?hl=en) 20 | 21 | ## Configuration 22 | 23 | Changes to the `cookie_samesite` attribute can be applied to your `framework.yaml`. The `cookie_secure` ensures that cookies are sent via HTTP or HTTPS, depending on the request's origin. 24 | 25 | ```yaml 26 | 27 | framework: 28 | session: 29 | cookie_secure: 'auto' 30 | cookie_samesite: lax 31 | ``` 32 | 33 | If you want to deactivate the SameSite protection despite security risks, change the value from `lax` to `null`. For detailed configuration options, check the official [Symfony Docs](https://symfony.com/doc/current/reference/configuration/framework.html#cookie-samesite). 34 | -------------------------------------------------------------------------------- /resources/references/adr/2023-01-16-npm-packages-pre-release-versions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Npm packages pre-release versions 3 | date: 2023-01-16 4 | area: administration 5 | tags: [npm, package, pre-release] 6 | --- 7 | 8 | # Npm packages pre-release versions 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2023-01-16-npm-packages-pre-release-versions.md) 13 | ::: 14 | 15 | ## Context 16 | A pre-release package version is a version followed by a hyphen and an alphanumeric string. 17 | 18 | Imagine the following scenario: 19 | * An imaginary package is marked as insecure with version 1.8.7 20 | * The issue is fixed with 2.0.0 21 | * We use version `1.9.0-alpha1` 22 | * Any pre-release package version like `1.9.0-alpha1` is interpreted as `<0.0.0` by npm 23 | 24 | Why is this problematic? 25 | 26 | The insecurity introduced with version `1.8.7` would never get reported to us by npm, unless we switch to a none pre-release version. 27 | 28 | ## Decision 29 | Using pre-release package versions is prohibited. 30 | This will be checked via a npm `preinstall` script. 31 | 32 | ## Consequences 33 | Bug fix releases only available as a preview in a pre-release package can't be used. 34 | -------------------------------------------------------------------------------- /concepts/api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: API 4 | position: 40 5 | 6 | --- 7 | 8 | # API 9 | 10 | The Shopware API allows developers to interact with and integrate Shopware with other systems and applications. It provides a set of services that enable developers to perform various operations, such as managing products, customers, orders, and shopping carts.The API supports both read and write operations, allowing developers to retrieve information from Shopware and make modifications or additions to the e-commerce platform. By leveraging the Shopware API, developers can extend the functionality of Shopware, integrate it with external systems, and create seamless experiences for managing and operating online stores. 11 | 12 | Shopware supports two major functional APIs: the Store API and the Admin API. These APIs serve different purposes. The Store API is designed to interact with the front-end or storefront of a Shopware online store while the Admin API is intended for administrative operations related to managing the back-end of the Shopware platform. 13 | 14 | The API documentation provides details on the available endpoints, request/response formats, authentication mechanisms, and data structures. It supports different authentication methods, including token-based authentication and OAuth 2.0, to ensure secure communication between the API client and the Shopware platform. 15 | -------------------------------------------------------------------------------- /guides/plugins/plugins/administration/advanced-configuration/extending-webpack.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Extending Webpack 4 | position: 240 5 | 6 | --- 7 | 8 | # Extending Webpack 9 | 10 | ## Overview 11 | 12 | The Shopware 6 Administration uses [Webpack](https://webpack.js.org/) as a static module bundler. Normally you don't need to change the Webpack configuration, but if you need to here is how to do it. 13 | 14 | ## Extending the Webpack configuration 15 | 16 | The Webpack configuration can be extended by creating the file `/src/Resources/app/administration/build/webpack.config.js` and exporting a function from it. This will return a [webpack configuration object](https://webpack.js.org/configuration/), as seen below: 17 | 18 | ```javascript 19 | // /src/Resources/app/administration/build/webpack.config.js 20 | const path = require('path'); 21 | 22 | module.exports = () => { 23 | return { 24 | resolve: { 25 | alias: { 26 | SwagBasicExample: path.join(__dirname, '..', 'src') 27 | } 28 | } 29 | }; 30 | }; 31 | ``` 32 | 33 | This way, the configuration is automatically loaded and then merged with the Shopware provided webpack configuration. Configurations of plugins are **not** merged into each other. Merging is done with the [webpackMerge](https://github.com/survivejs/webpack-merge) library. 34 | -------------------------------------------------------------------------------- /products/paas/shopware-paas/elasticsearch.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Elasticsearch 4 | position: 60 5 | 6 | --- 7 | 8 | # Elasticsearch 9 | 10 | Perform the following steps to activate Elasticsearch in your environment. 11 | 12 | ## Enable service 13 | 14 | Add (or uncomment) the Elasticsearch service configuration. 15 | 16 | ```yaml 17 | // .platform/services.yaml 18 | elasticsearch: 19 | type: opensearch:2 20 | disk: 256 21 | ``` 22 | 23 | ## Add relationship 24 | 25 | Add (or uncomment) the relationship for the app configuration. 26 | 27 | ```yaml 28 | // .platform.app.yaml 29 | relationships: 30 | elasticsearch: "elasticsearch:opensearch" 31 | ``` 32 | 33 | ## Configure instance 34 | 35 | Follow the setup and indexing steps to prepare your instance as described in the [setup Elasticsearch](../../../guides/hosting/infrastructure/elasticsearch/elasticsearch-setup#prepare-shopware-for-elasticsearch). 36 | 37 | After that, the following environment variables are provided by the Composer package `shopware/paas-meta: 38 | 39 | * `SHOPWARE_ES_HOSTS` 40 | 41 | ## Enable Elasticsearch 42 | 43 | Ultimately, activate Elasticsearch by setting the environment variable `SHOPWARE_ES_ENABLED` to `1`. You can either do that by uncommenting the corresponding line in `platformsh-env.php` or setting it in the [variables](./setup-template#variables) section of the app configuration. 44 | -------------------------------------------------------------------------------- /resources/references/adr/2020-09-08-custom-field-label-loading-in-storefront.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: CustomField label loading in storefront 3 | date: 2020-09-08 4 | area: storefront 5 | tags: [custom-fields, storefront, snippets] 6 | --- 7 | 8 | # CustomField label loading in storefront 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2020-09-08-custom-field-label-loading-in-storefront.md) 13 | ::: 14 | 15 | ## Context 16 | 17 | We want to provide the labels of custom fields in the storefront to third party developers. 18 | On one hand we could add the labels to every loaded entity, but this will cause a heavy leak of performance and the labels 19 | are often not used in the template. 20 | 21 | ## Decision 22 | 23 | We implemented a subscriber, which listen on the `custom_field.written` event to add also snippets to all snippet sets with 24 | the given label translations of the custom field. The `translationKey` of the snippets are prefixed with `customFields.`, 25 | followed by the technical name of the custom field. Thus the snippets can be used in the storefront. 26 | 27 | ## Consequences 28 | 29 | Inserting a custom field always creates new snippet with the given label translations. 30 | -------------------------------------------------------------------------------- /guides/plugins/apps/gateways/checkout/command-reference.md: -------------------------------------------------------------------------------- 1 | # Checkout Gateway Command Reference 2 | 3 | | Command | Description | Payload | Since | 4 | |:-------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------|:--------| 5 | | `remove-payment-method` | Removes a payment method from the available payment methods. | `{"paymentMethodTechnicalName": "string"}` | 6.6.3.0 | 6 | | `remove-shipping-method` | Removes a shipping method from the available shipping methods. | `{"shippingMethodTechnicalName": "string"}` | 6.6.3.0 | 7 | | `add-cart-error` | Adds an error to the cart. The level decides the severity of the cart error flash message. Blocking decides, whether to block the checkout for the customer. | `{"message": "string", "level": "int", "blocking": "boolean"}` | 6.6.3.0 | 8 | -------------------------------------------------------------------------------- /resources/references/adr/2022-09-28-mapping-of-product-area.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Mapping of product area 3 | date: 2022-09-28 4 | area: product-operations 5 | tags: [workflow] 6 | --- 7 | 8 | # Mapping of product area 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2022-09-28-mapping-of-product-area.md) 13 | ::: 14 | 15 | ## Context 16 | 17 | We have a lot of teams working on different parts of the Shopware 6 platform. 18 | We want to have a clear mapping of the teams to the source code, so that we can easily assign the right area to a ticket. 19 | This allows us also to map automatically errors reported in our SaaS application to the right area. 20 | 21 | ## Decision 22 | 23 | We decided to add a `@package ` annotation to all files in the `src` and `tests` directory of the `platform`, `rufus` and `commercial` repository. 24 | This annotation will be used to map the files to the product areas. 25 | 26 | The areas are: 27 | 28 | - admin 29 | - storefront 30 | - core 31 | - inventory 32 | - checkout 33 | - content 34 | - customer-order 35 | - services-settings 36 | - buyers-experience 37 | 38 | ## Consequences 39 | 40 | We will add a PHP-doc/JavaScript comment to any file with `@package ` 41 | -------------------------------------------------------------------------------- /resources/references/adr/2022-11-25-run-lighthouse-test-ine2e-env.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Run Lighthouse tests in E2E env 3 | date: 2022-11-25 4 | area: storefront 5 | tags: [lighthouse, performance, storefront] 6 | --- 7 | 8 | # Run Lighthouse tests in E2E env 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2022-11-25-run-lighthouse-test-ine2e-env.md) 13 | ::: 14 | 15 | ## Context 16 | The Lighthouse test ran in the `APP_ENV=prod`, this meant that also AdminQueueWorker was active, which is recommended to not be used in real prod setups. 17 | 18 | ## Decision 19 | Use `APP_ENV=e2e` for lighthouse tests, to deactivate the admin worker. After removing enqueue lighthouse ran int o timeouts when the admin worker was used, this solves this problem also. 20 | Besides that it should lead to much more realistic results. 21 | 22 | ## Consequences 23 | This means that the lighthouse tests won't run in the real `prod` env anymore, but the main difference between the two envs is that in `e2e` env the admin worker is deactivated, which is probably closer to "real" production setups. 24 | The only other difference is that all rate limits are deactivated in the `e2e` env, but this is not relevant for the lighthouse tests. 25 | -------------------------------------------------------------------------------- /guides/integrations-api/general-concepts/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: General Concepts 4 | position: 10 5 | 6 | --- 7 | 8 | # General Concepts 9 | 10 | Even though the Admin API and the Store API serve very different purposes, they have some commonalities handy to be aware of. 11 | 12 | ## Querying data 13 | 14 | For the Admin API these apply to the `/search` endpoint, whilst for the Store API they apply to almost every endpoint that returns a list of records. 15 | 16 | It starts with a very simple underlying concept, which encapsulates your entire search description in one generic object, referred to as the **search criteria**. 17 | 18 | 19 | 20 | There are some additional instructions that can be specified using **request headers**. 21 | 22 | 23 | 24 | ## Documentation 25 | 26 | Here you find a common approach regarding the way that Shopware provides endpoint references for its APIs: 27 | 28 | 29 | 30 | ## API versioning 31 | 32 | Starting with Shopware version 6.4.0.0, we changed our API versioning strategy. The following article will cover what has been done and changed, how it used to be and how the version strategy looks like now. 33 | 34 | 35 | 36 | These topics provide essential foundations for effective API development and usage in Shopware. 37 | -------------------------------------------------------------------------------- /resources/references/adr/2020-11-06-creating-events.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Creating events in Shopware 3 | date: 2020-11-06 4 | area: core 5 | tags: [event, context, sales-channel-context] 6 | --- 7 | 8 | # Creating events in Shopware 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2020-11-06-creating-events.md) 13 | ::: 14 | 15 | ## Context 16 | 17 | Events throughout Shopware are quite inconsistent. 18 | It is not defined which data it must or can contain. 19 | This mainly depends on the domain where the events are thrown. 20 | 21 | ## Decision 22 | 23 | Developers should always have access to the right context of the current request, 24 | at least the `Shopware\Core\Framework\Context` should be present as property in events. 25 | If the event is thrown in a SalesChannel context, 26 | the `Shopware\Core\System\SalesChannel\SalesChannelContext` should also be present as property. 27 | 28 | ## Consequences 29 | 30 | From now on every new event must implement the `Shopware\Core\Framework\Event\ShopwareEvent` interface. 31 | If a `Shopware\Core\System\SalesChannel\SalesChannelContext` is also available, 32 | the `Shopware\Core\Framework\Event\ShopwareSalesChannelEvent` interface must be implemented instead. 33 | -------------------------------------------------------------------------------- /guides/plugins/apps/app-sdks/php/06-events.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Events 4 | position: 60 5 | 6 | --- 7 | 8 | # Events 9 | 10 | The `Shopware\App\SDK\AppLifecycle` and `Shopware\App\SDK\Registration\RegistrationService` class accepts a PSR event dispatcher. 11 | When a PSR Dispatcher is passed, the following events will be fired: 12 | 13 | - [BeforeShopActivateEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/BeforeShopActivateEvent.php) 14 | - [ShopActivatedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/ShopActivatedEvent.php) 15 | - [BeforeShopDeactivatedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/BeforeShopDeactivatedEvent.php) 16 | - [ShopDeactivatedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/ShopDeactivatedEvent.php) 17 | - [BeforeShopDeletionEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/BeforeShopDeletionEvent.php) 18 | - [ShopDeletedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/ShopDeletedEvent.php) 19 | - [BeforeRegistrationCompletedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/BeforeRegistrationCompletedEvent.php) 20 | - [RegistrationCompletedEvent](https://github.com/shopware/app-php-sdk/blob/main/src/Event/RegistrationCompletedEvent.php) 21 | 22 | With that event, you can react to several actions during the app lifecycle or a registration process to run your code. 23 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite-migration/development/validation-and-run.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Validation and Run 4 | position: 50 5 | 6 | --- 7 | 8 | # Configuration Validation and Migration Execution 9 | 10 | After configuring your migration, follow these steps: 11 | 12 | 1. Validate the configuration: 13 | Validate your migration configuration to ensure correctness before running the migration. 14 | 15 | ```bash 16 | bin/console b2b:migrate:validate 17 | ``` 18 | 19 | - Checks the configuration for errors. Ensure the XML is well-formed and adheres to a valid schema. It will also verify if the fields and tables exist in the database; otherwise, it will throw an exception. 20 | - Provides hints to resolve issues if validation fails. 21 | 22 | ::: info 23 | Validation helps catch configuration errors early, saving time during migration. 24 | ::: 25 | 26 | 2. Monitor progress (should be run in a separate terminal): 27 | 28 | ```bash 29 | bin/console b2b:migrate:progress --watch 30 | ``` 31 | 32 | 3. Start the migration (ensure the queue worker is running): 33 | 34 | ```bash 35 | bin/console b2b:migrate:commercial 36 | ``` 37 | 38 | 4. Review logs and errors in `b2b_components_migration_errors` to ensure a successful migration. 39 | 40 | 5. In case you want to roll back the migration, use: 41 | 42 | ```bash 43 | bin/console b2b:migrate:rollback 44 | ``` 45 | -------------------------------------------------------------------------------- /resources/references/adr/2021-11-23-add-possibility-for-plugin-to-add-a-html-file.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Add possibility for plugins to add a HTML file 3 | date: 2021-11-23 4 | area: administration 5 | tags: [plugin, admin, extension-api] 6 | --- 7 | 8 | # Add possibility for plugins to add a HTML file 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2021-11-23-add-possibility-for-plugin-to-add-a-html-file.md) 13 | ::: 14 | 15 | ## Context 16 | The new ExtensionAPI is based on a iFrame communication architecture. The old App system for the admin relies on the XML 17 | file. And the normal plugin architecture in the admin is based on component overriding. The ideal way for developing 18 | admin extensions will be the ExtensionAPI. 19 | 20 | ## Decision 21 | To provide a smooth transition for plugin developer to the new ExtensionAPI which will be introduced soon we need to make sure that plugin can also 22 | behave like Apps in the administration. To fulfill this we need to provide a solution to show their own iFrame views. 23 | This is now directly possible when the plugin developer adds a `index.html` file to the plugin in the administration folder. 24 | 25 | This file will automatically be used by webpack and can be used like a normal web application. 26 | -------------------------------------------------------------------------------- /products/extensions/b2b-suite/guides/core/store-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Store API 4 | position: 20 5 | 6 | --- 7 | 8 | # Store API 9 | 10 | We use swagger.io for the documentation of our B2B Suite endpoints. The created [swagger.json](https://gitlab.com/shopware/shopware/enterprise/b2b/-/blob/minor/swagger.json) file can be displayed with [Swagger UI](https://swagger.io/tools/swagger-ui/). 11 | 12 | ## Description 13 | 14 | The B2B Suite is compatible with the Shopware 6 Store API. 15 | 16 | ## Authentication 17 | 18 | Every request needs two headers: 19 | 20 | * **`sw-context-token`**: First, you will need to authenticate as a customer by sending a `POST` request to the `/account/login` route to obtain a context token. 21 | * **`sw-access-key`**: The access key for the Store API can be found in the Administration when editing a SalesChannel. 22 | 23 | Refer to the [Store API](https://shopware.stoplight.io/docs/store-api/ZG9jOjEwODA3NjQx-authentication-and-authorisation) guide to learn more about authentication. 24 | 25 | ## Route pattern 26 | 27 | The route pattern is basically the same as in the Admin API but without the identity identifier because the identity is fetched from the context token. 28 | 29 | ### Route replacement examples 30 | 31 | * `/api/b2b/debtor/address/type/` becomes `/store-api/b2b/address/type/` 32 | * `/api/b2b/debtor/offer` becomes `/store-api/b2b/offer` 33 | * `/api/b2b/debtor/order` becomes `/store-api/b2b/order` 34 | -------------------------------------------------------------------------------- /concepts/framework/migrations.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Migrations 4 | position: 30 5 | 6 | --- 7 | 8 | # Migrations 9 | 10 | Migrations are PHP classes containing database schema changesets. These changesets can be applied or reverted to bring the database into a certain state. You might know the concept of migrations from other Frameworks or Symfony as well. 11 | 12 | ## Adding migrations to a plugin 13 | 14 | For Shopware to recognize additional plugin migrations, they need to be placed in the `Migration` directory under your plugin's source code root directory. 15 | 16 | Each migration filename follows a specific pattern. To ease plugin development, Shopware provides a console command which can be used to generate a correctly named migration file with the default methods needed. 17 | 18 | 19 | 20 | ## Modifying the database 21 | 22 | Each migration can have two methods. The `update` and `updateDestructive`. The `update` method must contain only non-destructive changes which can be rolled back at any time. The `updateDestructive` method can contain destructive changes, like dropping columns or tables, which cannot be reversed. For examples of database migrations, refer to the below guide: 23 | 24 | 25 | -------------------------------------------------------------------------------- /products/digital-sales-rooms/configuration/domain-config.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Domain Configuration 4 | position: 10 5 | 6 | --- 7 | 8 | ::: warning 9 | Based on the business use case, the merchant can decide to add *Digital Sales Rooms* to their existing sales channel or new sales channel. 10 | When you run the frontend app server, you will always have a specific domain (eg: `https://dsr.shopware.io`) 11 | ::: 12 | 13 | # Domain Configuration for frontend app 14 | 15 | This section will show you how to add these domains to a sales channel. 16 | 17 | ## Setup domains for Digital Sales Rooms 18 | 19 | ::: warning 20 | Please redeploy or rerun your frontend app to apply the domain changes into it. 21 | ::: 22 | 23 | - After specifying the sales channel, head to the *Domains section* and add appropriate *Digital Sales Rooms* domains with appropriate languages. *Digital Sales Rooms* can switch languages by the path, you can choose your domain path to represent a language. Here is our recommendation: 24 | 25 | ```text 26 | https://dsr.shopware.io - English 27 | https://dsr.shopware.io/de-DE - Deutsch 28 | https://dsr.shopware.io/en-US - English (US) 29 | ``` 30 | 31 | ![ ](../../../assets/setup-domain-for-sales-channel-DSR.png) 32 | 33 | - These *Digital Sales Rooms* domains should be selected as *Available domains* in [Configuration Page - Appointments](./plugin-config.md#appointments) 34 | 35 | ![ ](../../../assets/fill-domain-into-configuration.png) 36 | -------------------------------------------------------------------------------- /products/extensions/advanced-search/How-to-configure-searchable-fields.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: Configure Searchable Fields 4 | position: 40 5 | 6 | --- 7 | 8 | # Configure Searchable Fields 9 | 10 | Search entities and their searchable fields are stored in `advanced_search_config` and `advanced_search_config_field` table respectively. 11 | 12 | These configured fields help to build the search query when a search/suggest request is sent from the client. 13 | 14 | This approach is very similar to how `product_search_config` and `product_search_config_field` work in the platform. The main difference is you can configure the configuration by sales channel instead of by language (each sales channel now has its own search config). 15 | 16 | @Refer: 17 | 18 | `\Shopware\Commercial\AdvancedSearch\Entity\AdvancedSearchConfig\AdvancedSearchConfigDefinition` 19 | `\Shopware\Commercial\AdvancedSearch\Entity\AdvancedSearchConfig\Aggregate\AdvancedSearchConfigFieldDefinition` 20 | 21 | To have the custom search configuration, you need to add a migration to insert the configuration into the database. In the below example, we add default search configuration for product, manufacturer, and category entities 22 | 23 | @Refer: `\Shopware\Commercial\Migration\Migration1680751315SWAGAdvancedSearch_AddAdvancedSearchConfigurationDefaults` 24 | 25 | And you might want to add the configuration for newly created saleschannel as well: 26 | @Refer: `\Shopware\Commercial\AdvancedSearch\Subscriber\SalesChannelCreatedSubscriber` 27 | -------------------------------------------------------------------------------- /resources/references/api-reference/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | nav: 3 | title: API Reference 4 | position: 10 5 | 6 | --- 7 | 8 | # API Reference 9 | 10 | The API references provide detailed information about the available endpoints, methods, parameters, request and response formats, and authentication mechanisms of an API. It provides essential information on how to interact with the API, what data can be sent or received, and how to handle different API responses. 11 | 12 | These references guide you to use the correct syntax, understand the expected input and output formats, implement the necessary authentication mechanisms and successful API requests and effectively utilize the functionality provided by the API in your applications. 13 | 14 | There are two dedicated API reference documents for your reference: 15 | 16 | * [Store API reference](https://shopware.stoplight.io/docs/store-api/38777d33d92dc-quick-start-guide) - Focused on customer-facing aspects, the Store API allows you to access and manipulate data related to products, customer interactions, shopping carts, and others that significantly impact the frontend user experience. It caters to both anonymous and authenticated users. 17 | 18 | * [Admin API reference](https://shopware.stoplight.io/docs/admin-api/twpxvnspkg3yu-quick-start-guide) - Primarily for backend and administrative functions, the Admin API enables structured data exchanges, bulk operations, data synchronization, and import-export tasks, addressing the backend needs of the Shopware platform. 19 | -------------------------------------------------------------------------------- /resources/references/adr/2022-05-12-remove-static-analysis-with-psalm.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Remove static analysis with psalm 3 | date: 2022-05-12 4 | area: core 5 | tags: [phpstan, psalm, static-analyse] 6 | --- 7 | 8 | # Remove static analysis with psalm 9 | 10 | ::: info 11 | This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. 12 | You can find the original version [here](https://github.com/shopware/shopware/blob/trunk/adr/2022-05-12-remove-static-analysis-with-psalm.md) 13 | ::: 14 | 15 | ## Context 16 | Currently, we are running static analysis over the php code with both `phpstan` and `psalm`. 17 | This slows down our pipeline and may lead to weird effects where `phpstan` and `psalm` report errors that are incompatible with each other. 18 | 19 | ## Decision 20 | There is not much need anymore to run both tools, as they pretty much converged to a common feature set. 21 | This was different when we started with shopware 6 where both tools had some different features, but most of the differences are gone by now. 22 | Therefore, we won't run both tools anymore in the CI. 23 | 24 | We decided to stick with `phpstan` and remove `psalm` because: 25 | * It's easier to write custom `phpstan` rules than to extend `psalm` 26 | * We already have custom `phpstan` rules 27 | * There are more extension for `phpstan`, e.g. for `symfony` or `phpunit` 28 | 29 | ## Consequences 30 | `psalm` will be completely removed from the repository and the CI. 31 | --------------------------------------------------------------------------------