diff --git a/concepts/commerce/catalog/products.md b/concepts/commerce/catalog/products.md index b290cb2f96..55ec34ddc3 100644 --- a/concepts/commerce/catalog/products.md +++ b/concepts/commerce/catalog/products.md @@ -9,7 +9,7 @@ nav: Products are sellable entities (physical and digital products) within your shop. -Depending on your setup, Shopware can easily handle thousands of products. However, an upsurge in the product quantity (in millions) needs some tweaks for robust running of the environment as it depends on factors like the number of [categories](../../../concepts/commerce/catalog/categories), [sales channels](../../../concepts/commerce/catalog/sales-channels), [product properties](../../../concepts/commerce/catalog/products#property-groups--options), etc. Every product added to your shop can be made available on one or more [sales channels](../../../concepts/commerce/catalog/sales-channels). +Depending on your setup, Shopware can easily handle thousands of products. However, an upsurge in the product quantity (in millions) needs some tweaks for robust running of the environment as it depends on factors like the number of [categories](../../../concepts/commerce/catalog/categories), [sales channels](../../../concepts/commerce/catalog/sales-channels), [product properties](../../../concepts/commerce/catalog/products), etc. Every product added to your shop can be made available on one or more [sales channels](../../../concepts/commerce/catalog/sales-channels). Let's delve into a more detailed understanding of products using the example of garments: @@ -52,8 +52,8 @@ erDiagram uuid product_id } ProductCategory { - uuid product_id - uuid category_id + uuid product_id + uuid category_id } Category { uuid category_id diff --git a/concepts/commerce/checkout-concept/cart.md b/concepts/commerce/checkout-concept/cart.md index 9f5e92e46b..015c005109 100644 --- a/concepts/commerce/checkout-concept/cart.md +++ b/concepts/commerce/checkout-concept/cart.md @@ -116,7 +116,7 @@ stateDiagram-v2 Enrichment secures the *Independence_ and _Adaptability* of Shopware 6. As shown in the below code snippet, the cart can create and contain line items that are initially empty and will only be loaded \(enriched\) during the calculation. ```php ->Enrichment : +Enrichment->>Enrichment : box participant Enrichment participant ProductCartProcessor @@ -160,7 +160,7 @@ box Enrichment->>ProductCartProcessor: enrich Enrichment->>CartPromotionsCollector: enrich Enrichment->>CartDiscountCollector: enrich - Enrichment->>Enrichment : + Enrichment->>Enrichment : ``` ## Cart processors - price calculation and validation @@ -195,7 +195,7 @@ As you can see in the diagram above, the cart is modified during the enrichment ## Cart storage -Contrary to other entities in the system, the cart is not managed through the [Data Abstraction Layer](/docs/concepts/framework/data-abstraction-layer)\(DAL)\. The cart can only be written and retrieved as a whole. As discussed in the sections, the workload of Shopware 6 can only be performed on the whole object in memory. +Contrary to other entities in the system, the cart is not managed through the [Data Abstraction Layer](./../../../concepts/framework/data-abstraction-layer)\(DAL)\. The cart can only be written and retrieved as a whole. As discussed in the sections, the workload of Shopware 6 can only be performed on the whole object in memory. ## Cart control diff --git a/concepts/translations/built-in-translation-system.md b/concepts/translations/built-in-translation-system.md index bc5883cd19..4b2a8e8117 100644 --- a/concepts/translations/built-in-translation-system.md +++ b/concepts/translations/built-in-translation-system.md @@ -75,7 +75,7 @@ When loading translations, the system follows a defined priority order to resolv look at its documentation. 3. Country-agnostic translations (`en` and `de`) – These are shipped with Shopware and its plugins. They ensure that the system always has a reliable fallback language and provide a consistent developer experience without requiring you - to wait until your translations are accepted at [translate.shopware.com](https://crowdin.com/project/shopware6). For more details on selecting a fallback language and structuring your snippet files, see the [Fallback Languages guide](/concepts/translations/fallback-language-selection.md). + to wait until your translations are accepted at [translate.shopware.com](https://crowdin.com/project/shopware6). For more details on selecting a fallback language and structuring your snippet files, see the [Fallback Languages guide](./../../concepts/translations/fallback-language-selection). 4. Built-in translation system – Finally, the translations installed via the built-in translation system are applied. ## Built-in translation system and Flysystem @@ -102,35 +102,35 @@ You can find the configuration file at `src/Core/System/Resources/translation.ya #### `repository-url` -**Type:** `string` +**Type:** `string` **Example:** ```yaml repository-url: https://raw.githubusercontent.com/shopware/translations/main/translations ``` -**Description:** +**Description:** The base URL of the translation repository. Translation files for different languages and plugins are fetched from here. --- #### `metadata-url` -**Type:** `string` +**Type:** `string` **Example:** ```yaml metadata-url: https://raw.githubusercontent.com/shopware/translations/main/crowdin-metadata.json ``` -**Description:** +**Description:** The URL for [metadata information](#how-does-the-system-recognize-new-updates) about the translations. --- #### `plugins` -**Type:** `array[string]` +**Type:** `array[string]` **Example:** ```yaml @@ -141,21 +141,21 @@ plugins: [ ] ``` -**Description:** +**Description:** A list of supported plugins for which translations are available. --- #### `excluded-locales` -**Type:** `array[string]` +**Type:** `array[string]` **Example:** ```yaml excluded-locales: [ 'de-DE', 'en-GB' ] ``` -**Description:** +**Description:** A list of language locales to be excluded from translation processing. German (Germany) and English (UK) are excluded by default since they are shipped with Shopware. The exclusion applies to plugins too. @@ -163,7 +163,7 @@ default since they are shipped with Shopware. The exclusion applies to plugins t #### `plugin-mapping` -**Type:** `array[object]` +**Type:** `array[object]` **Example:** ```yaml @@ -177,14 +177,14 @@ plugin-mapping: - `plugin` (`string`): The internal plugin identifier (e.g., directory or code name). - `name` (`string`): The corresponding plugin name in the translation repository. -**Description:** +**Description:** Allows mapping between internal plugin identifiers and repository names in case they differ. --- #### `languages` -**Type:** `array[object]` +**Type:** `array[object]` **Example:** ```yaml @@ -199,7 +199,7 @@ languages: - `locale` (`string`): Language code according to [IETF BCP 47](https://www.rfc-editor.org/info/bcp47), restricted to [ISO 639-1 (2-letter) language codes](https://en.wikipedia.org/wiki/ISO_639-1), used by Shopware for translations. -**Description:** +**Description:** Defines the set of supported languages for which translations should be retrieved. Each entry specifies a display name and a locale code. diff --git a/concepts/translations/fallback-language-selection.md b/concepts/translations/fallback-language-selection.md index 7189918907..7d638cda45 100644 --- a/concepts/translations/fallback-language-selection.md +++ b/concepts/translations/fallback-language-selection.md @@ -1,18 +1,18 @@ # Fallback language selection -With Shopware 6.7 a **country-agnostic snippet layer** was introduced to reduce duplicate translations. -In this model the snippet loader first attempts to load a country-specific variant (e.g. `de-DE`), then looks for an agnostic **fallback language** (e.g. `de`), and as a last resort falls back to `en` as a universal default. +With Shopware 6.7 a **country-agnostic snippet layer** was introduced to reduce duplicate translations. +In this model the snippet loader first attempts to load a country-specific variant (e.g. `de-DE`), then looks for an agnostic **fallback language** (e.g. `de`), and as a last resort falls back to `en` as a universal default. The fallback layer concept and fallback order are explained in detail in the [Built-in Translation Handling](built-in-translation-system.md) page, which you should read alongside this guide. ## Why an extra fallback layer? -Before v6.7, Shopware shipped only country-specific snippet files. Developers often duplicated existing files (for example `en-GB` to `en-US`) and changed a handful of keys. -This practice led to bloated repositories and inconsistent fallbacks. The **country-independent layer** centralizes common translations into a neutral fallback file (`en`, `de`, `pt`, etc.) and isolates regional differences in small patch files. +Before v6.7, Shopware shipped only country-specific snippet files. Developers often duplicated existing files (for example `en-GB` to `en-US`) and changed a handful of keys. +This practice led to bloated repositories and inconsistent fallbacks. The **country-independent layer** centralizes common translations into a neutral fallback file (`en`, `de`, `pt`, etc.) and isolates regional differences in small patch files. Detailed examples of how Shopware resolves translations are available in the [Built-in Translation Handling](built-in-translation-system.md) guide. ## Fallback languages -The **fallback code** is the plain language code (e.g. `en` or `de`), and the **defining dialect** is the standard locale from which the fallback translations derive (for example `en` instead of `en-US` or `en-GB`). +The **fallback code** is the plain language code (e.g. `en` or `de`), and the **defining dialect** is the standard locale from which the fallback translations derive (for example `en` instead of `en-US` or `en-GB`). The table shows some examples of common cases: | Fallback code | Standard variant (defining dialect) | Example dialects | @@ -50,7 +50,7 @@ The command supports several options: ## Implementation guidelines for extension developers -For detailed instructions, see the [Extension Translation Migration](/resources/references/upgrades/core/translation/extension-translation.md) guide. In short: +For detailed instructions, see the [Extension Translation Migration](./../../resources/references/upgrades/core/translation/extension-translation) guide. In short: - **Create a complete base file** (`messages..base.json`) for each supported language. - **Add patch files only when needed** – keep them minimal. @@ -62,4 +62,4 @@ For detailed instructions, see the [Extension Translation Migration](/resources/ ## Conclusion The country-independent snippet layer streamlines translation maintenance by consolidating common strings into a neutral fallback file and isolating regional vocabulary into small patch files. -For further examples, refer to [Built-in Translation Handling](/concepts/translations/built-in-translation-system.md) and [Extension Translation Migration](/resources/references/upgrades/core/translation/extension-translation.md). +For further examples, refer to [Built-in Translation Handling](./built-in-translation-system) and [Extension Translation Migration](./../../resources/references/upgrades/core/translation/extension-translation). diff --git a/guides/hosting/infrastructure/elasticsearch/elasticsearch-debugging.md b/guides/hosting/infrastructure/elasticsearch/elasticsearch-debugging.md index a7ca0514ec..3ec8b03983 100644 --- a/guides/hosting/infrastructure/elasticsearch/elasticsearch-debugging.md +++ b/guides/hosting/infrastructure/elasticsearch/elasticsearch-debugging.md @@ -44,7 +44,7 @@ bin/console es:index // Creates only the index for ES `es:create:alias` will create an alias linking to the index after `es:index` is done. Normally this is done automatically. In the older version, this has to be done. ```bash -bin/console es:create:alias +bin/console es:create:alias ``` **> No Output** @@ -205,9 +205,9 @@ curl -X DELETE 'elasticsearch:9200/_all' Returns the status of your indexing: ```sql -select * from message_queue_stats mqs ; -select count(*) from enqueue e ; -select count(*) from dead_message dm ; +select * from message_queue_stats mqs ; +select count(*) from enqueue e ; +select count(*) from dead_message dm ; ``` The number of entries in the enqueue should match the sum of the size values in the `message_queue_stats`. As long as there are entries in your `enqueue`, the indexing is in process and your message consumer has to work those messages. @@ -218,7 +218,7 @@ Sometimes you want to reset the indexing in your database because your indexing If the database queue is used, third-party services will differ. You can do so with the following queries. ```sql -truncate enqueue ; +truncate enqueue ; truncate dead_message ; truncate message_queue_stats ; update scheduled_task set status = 'scheduled' where status = 'queued'; @@ -230,7 +230,7 @@ This is mainly for debugging purposes and is only meant for testing and staging First, execute the database reset (only working for the database queue): ```sql -truncate enqueue ; +truncate enqueue ; truncate dead_message ; truncate message_queue_stats ; update scheduled_task set status = 'scheduled' where status = 'queued'; diff --git a/guides/hosting/infrastructure/elasticsearch/elasticsearch-setup.md b/guides/hosting/infrastructure/elasticsearch/elasticsearch-setup.md index 1c9cd66213..1ced473cc2 100644 --- a/guides/hosting/infrastructure/elasticsearch/elasticsearch-setup.md +++ b/guides/hosting/infrastructure/elasticsearch/elasticsearch-setup.md @@ -170,7 +170,7 @@ For additional support with common Elasticsearch errors and more tips please ref ### Indexing the whole shop Sometimes you want to reindex your whole shop, including Elasticsearch, SEO-URLs, product index, and more. -For a reindex of the whole shop, you can use the command `bin/console dal:refresh:index --use-queue`. Use the `--use-queue` option because you will have too many products to index without the [message queue](/docs/guides/hosting/infrastructure/message-queue) involved. +For a reindex of the whole shop, you can use the command `bin/console dal:refresh:index --use-queue`. Use the `--use-queue` option because you will have too many products to index without the [message queue](../message-queue) involved. ### Alias creation @@ -184,10 +184,10 @@ If a messenger process is active, the entries of that table are processed one by In case a message runs into an error, it is written into the `dead_messages` table and will be processed again after a specific time frame. You can start multiple messenger consumer processes by using the command `bin/console messenger:consume` and also add output to the processed messages by adding the parameter `bin/console messenger:consume -vv`. -In a production environment, you want to deactivate the admin messenger which is started automatically when opening a session in your Administration view by following this [documentation](/docs/guides/plugins/plugins/framework/message-queue/add-message-handler#the-admin-worker). +In a production environment, you want to deactivate the admin messenger which is started automatically when opening a session in your Administration view by following this [documentation](../../../../guides/hosting/infrastructure/message-queue#admin-worker). Our experience has shown that up to three worker processes are normal and useful for a production environment. -If you want more than that, a tool like [RabbitMQ](/docs/guides/hosting/infrastructure/message-queue#transport-rabbitmq-example) to handle the queue is needed so your database will not become a bottleneck. +If you want more than that, a tool like [RabbitMQ](../message-queue#message-queue-on-production-systems) to handle the queue is needed so your database will not become a bottleneck. ## Configuration diff --git a/guides/plugins/apps/index.md b/guides/plugins/apps/index.md index 9476e98c4c..fe2d79251d 100644 --- a/guides/plugins/apps/index.md +++ b/guides/plugins/apps/index.md @@ -19,12 +19,12 @@ Apps are well-suited for use cases such as: - Customizing the Storefront or Administration; creating custom themes, adding custom blocks or Storefront elements, or modifying the appearance and layout of the Administration panel - Facilitating integration with external systems to allow seamless data synchronization, order and product management, and cross-platform workflows -You can develop apps using the Shopware [App SDK](app-sdks), [App Scripts](app-scripts), and external services via the [App API](../../../resources/references/app-reference). Apps offer a modular and scalable way to extend and customize the platform according to specific business requirements. +You can develop apps using the Shopware [App SDK](app-sdks/index.md), [App Scripts](app-scripts/), and external services via the [App API](../../../resources/references/app-reference/). Apps offer a modular and scalable way to extend and customize the platform according to specific business requirements. -Follow our [App Base Guide](app-base-guide) and [App Starter Guide](starter) to learn how to develop an app. +Follow our [App Base Guide](app-base-guide/) and [App Starter Guide](starter/) to learn how to develop an app. ::: info Apps also provide theme support, so everything you can do with a theme plugin is also possible in an app. This makes them the preferred option for customizing design in Cloud shops. ::: -To understand how apps differ from other extension types, see the [Overview table](../../../guides/plugins/index). +To understand how apps differ from other extension types, see the [Overview table](../../../guides/plugins/index/). diff --git a/guides/plugins/apps/starter/starter-admin-extension.md b/guides/plugins/apps/starter/starter-admin-extension.md index 7649765b27..74427e7ef2 100644 --- a/guides/plugins/apps/starter/starter-admin-extension.md +++ b/guides/plugins/apps/starter/starter-admin-extension.md @@ -161,4 +161,4 @@ This example showed end-to-end how to create a local dev environment and connect * Did you know, you can add [new sections](/resources/admin-extension-sdk/api-reference/ui/component-section) to the UI or even [entire modules](/resources/admin-extension-sdk/api-reference/ui/mainModule)? * The Meteor Admin SDK also offers [TypeScript support](/resources/admin-extension-sdk/getting-started/installation#using-npm-require-bundling) (including autocompletion) -* Don't want to extend the admin panel? Have a look at [App Scripts](/docs/guides/plugins/apps/app-scripts/index.md) +* Don't want to extend the admin panel? Have a look at [App Scripts](../../../../guides/plugins/apps/app-scripts/index.md) diff --git a/guides/plugins/plugins/administration/templates-styling/adding-snippets.md b/guides/plugins/plugins/administration/templates-styling/adding-snippets.md index 1ce7ea7d35..adaa94fc7b 100644 --- a/guides/plugins/plugins/administration/templates-styling/adding-snippets.md +++ b/guides/plugins/plugins/administration/templates-styling/adding-snippets.md @@ -13,7 +13,7 @@ By default Shopware 6 uses the [Vue I18n](https://kazupon.github.io/vue-i18n/sta ## Creating snippet files -Normally you use snippets in your custom module. To keep things organized, create a new directory named `snippet` inside module directory `/src/Resources/app/administration/src/module//snippet`. For each language you want to support, you need a JSON file inside it, e.g., `de-DE.json`, `en-GB.json`. For more details on selecting a fallback language and structuring your snippet files, see the [Fallback Languages guide](/concepts/translations/fallback-language-selection.md). +Normally you use snippets in your custom module. To keep things organized, create a new directory named `snippet` inside module directory `/src/Resources/app/administration/src/module//snippet`. For each language you want to support, you need a JSON file inside it, e.g., `de-DE.json`, `en-GB.json`. For more details on selecting a fallback language and structuring your snippet files, see the [Fallback Languages guide](./../../../../../concepts/translations/fallback-language-selection). ::: info Providing snippets for apps works the same as in plugins but it has a more simplistic file structure. Also, unlike plugins, App-Snippets **are not allowed** to override existing snippet keys. So, use the following path for vendor-prefixed app snippet files: `/Resources/app/administration/snippet` @@ -51,7 +51,7 @@ Component.register('my-custom-page', { methods: { createdComponent() { - // call the $tc helper function provided by Vue I18n + // call the $tc helper function provided by Vue I18n const myCustomText = this.$tc('swag-example.general.myCustomText'); console.log(myCustomText); diff --git a/guides/plugins/plugins/index.md b/guides/plugins/plugins/index.md index e73834a47d..6ceb090859 100644 --- a/guides/plugins/plugins/index.md +++ b/guides/plugins/plugins/index.md @@ -18,7 +18,7 @@ You will likely create a plugin when you need to make profound changes or requir - Dynamic validations - Customer tracking or behavioral logic -Refer to our [Plugin Base Guide](plugin-base-guide) and [Plugin Fundamentals](plugin-fundamentals) for guidance on plugin development. +Refer to our [Plugin Base Guide](plugin-base-guide/) and [Plugin Fundamentals](plugin-fundamentals/) for guidance on plugin development. ::: info If your extension focuses only on design changes, a simple template adjustment—typically done through a theme plugin—may be the best choice. diff --git a/guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.md b/guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.md index ac9fcac05d..a0186f7ad9 100644 --- a/guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.md +++ b/guides/plugins/plugins/testing/cypress/cypress-end-to-end-testing.md @@ -27,7 +27,7 @@ This guide also won't teach you how to write Cypress tests in general. Please ta ### Using our testsuite -The [E2E platform testsuite package](https://github.com/shopwareArchive/e2e-testsuite-platform) contains commands and helpers supporting you while building E2E tests for Shopware 6. On top of that, test data management and custom commands are included as well. More on that here: [Command reference](../../../../resources/references/core-reference/commands-reference). +The [E2E platform testsuite package](https://github.com/shopwareArchive/e2e-testsuite-platform) contains commands and helpers supporting you while building E2E tests for Shopware 6. On top of that, test data management and custom commands are included as well. More on that here: [Command reference](../../../../resources/references/core-reference/commands-reference/). This test suite is built on top of [Cypress](https://www.cypress.io/) as well as the following Cypress plugins: @@ -45,7 +45,7 @@ Please have a look on our [cypress.json](https://github.com/shopwareArchive/e2e- When you use our [Development template](https://github.com/shopwareArchive/development), we provide you some tooling scripts located in `dev-ops/e2e/actions`, to use E2E tests more comfortably. -The`composer` scripts to run our E2E tests in CLI or in Cypress' test runner are explained in the paragraph [Executing e2e tests](end-to-end-testing#executing-e2e-tests). +The`composer` scripts to run our E2E tests in CLI or in Cypress' test runner are explained in the paragraph [Executing e2e tests](end-to-end-testing/#executing-e2e-tests). @@ -210,7 +210,7 @@ or composer e2e:cypress -- run --spec="cypress/e2e/storefront/**/*.cy.js" ``` -To see a complete overview on all psh scripts for e2e tests, feel free to refer to our [e2e command reference](../../../../../resources/references/testing-reference/e2e-commands). +To see a complete overview on all psh scripts for e2e tests, feel free to refer to our [e2e command reference](../../../../../resources/references/testing-reference/e2e-commands/). @@ -326,7 +326,7 @@ it('test something', () => { You can chain commands by passing its return value to the next one. These commands may contain extra steps to take, e.g. a `click` or `type` operation. -Cypress provides a lot of commands to represent a variety of steps a user could do. On top of that, our E2E testsuite contains a couple of [custom commands](../../../../../resources/references/testing-reference/e2e-custom-commands) specially for Shopware. +Cypress provides a lot of commands to represent a variety of steps a user could do. On top of that, our E2E testsuite contains a couple of [custom commands](../../../../../resources/references/testing-reference/e2e-custom-commands/) specially for Shopware. ### Assertions diff --git a/guides/plugins/plugins/testing/jest-admin.md b/guides/plugins/plugins/testing/jest-admin.md index 7cc9f09ca6..d4e786b5cf 100644 --- a/guides/plugins/plugins/testing/jest-admin.md +++ b/guides/plugins/plugins/testing/jest-admin.md @@ -604,6 +604,6 @@ Do you want to see these examples in practice? Head over to our [video tutorial] Furthermore, you might want to have a look at one of the following guides as well: -* [Jest tests for the storefront](jest-storefront) -* [PHPUnit tests](php-unit) -* [End-to-end tests](end-to-end-testing) +* [Jest tests for the storefront](jest-storefront/) +* [PHPUnit tests](php-unit/) +* [End-to-end tests](end-to-end-testing/) diff --git a/guides/plugins/plugins/testing/jest-storefront.md b/guides/plugins/plugins/testing/jest-storefront.md index 6f7685cb55..35568723fb 100644 --- a/guides/plugins/plugins/testing/jest-storefront.md +++ b/guides/plugins/plugins/testing/jest-storefront.md @@ -25,7 +25,7 @@ Before you are reading this guide you have to make sure you understand the basic In addition, you need a running Shopware 6 installation. Your repository used for that should be based on development template, as we will to use some scripts provided by it. -For one example, we use a Javascript plugin. In oder to follow this example, you need to know how to build a Javascript plugin in the first place. You can learn about it in the corresponding [guide](../storefront/add-custom-javascript). +For one example, we use a Javascript plugin. In oder to follow this example, you need to know how to build a Javascript plugin in the first place. You can learn about it in the corresponding [guide](../storefront/add-custom-javascript/). ## Test structure @@ -184,7 +184,7 @@ export default class HelloWorldPlugin extends Plugin { } ``` -Of course, you need to make sure that your plugin is registered, more details in the guide on [Javascript plugins](../storefront/add-custom-javascript). +Of course, you need to make sure that your plugin is registered, more details in the guide on [Javascript plugins](../storefront/add-custom-javascript/). In the beginning, writing plugin tests is still similar to other jest unit tests: You import your plugin's class and use the familiar test structure: @@ -412,5 +412,5 @@ describe('HelloWorldPlugin tests', () => { ## More interesting topics -* [PHPUnit tests](php-unit) -* [End-to-end tests](end-to-end-testing) +* [PHPUnit tests](php-unit/) +* [End-to-end tests](end-to-end-testing/) diff --git a/products/cli/index.md b/products/cli/index.md index 18393fc112..5cd70cdc2a 100644 --- a/products/cli/index.md +++ b/products/cli/index.md @@ -7,14 +7,14 @@ nav: # Shopware CLI -[Shopware CLI](https://github.com/shopware/shopware-cli) is the open-source command-line interface for working with Shopware 6. It's a standalone developer tool that you [install](installation.md) and configure separately from your Shopware instance. Once set up, it helps you automate and speed up common tasks such as: +[Shopware CLI](https://github.com/shopware/shopware-cli) is the open-source command-line interface for working with Shopware 6. It's a standalone developer tool that you [install](installation/) and configure separately from your Shopware instance. Once set up, it helps you automate and speed up common tasks such as: - managing and configuring Shopware projects - building, validating, and packaging extensions - uploading and maintaining extensions in the Shopware Store - running CI/CD pipelines for Shopware-based solutions -Shopware CLI runs on macOS, Linux, and via Docker. For system-level requirements (PHP, DB, memory, etc.) see the [General Requirements](../guides/requirements.md). +Shopware CLI runs on macOS, Linux, and via Docker. For system-level requirements (PHP, DB, memory, etc.) see the [General Requirements](../guides/requirements/). **Supported platforms (short):** macOS (Homebrew), Debian/Ubuntu (APT), other Linux via RPM or manual installation, and Docker. Windows users should use WSL 2 or Docker. (See full [installation](installation.md) page for Windows details.) @@ -93,11 +93,11 @@ shopware-cli extension fix /path/to/your/extension shopware-cli project fix /path/to/your/project ``` -Always back up or version your code before running refactoring commands, as they will modify files in place. [Learn more here](automatic-refactoring.md). +Always back up or version your code before running refactoring commands, as they will modify files in place. [Learn more here](automatic-refactoring/). ### Project commands -Work directly with your [Shopware project](deployment.md) to automate setup and maintenance tasks. Available commands include: +Work directly with your [Shopware project](deployment/) to automate setup and maintenance tasks. Available commands include: ```bash shopware-cli project create # Create a new Shopware 6 project @@ -107,7 +107,7 @@ shopware-cli project ci # Build Shopware in the CI ### Extension commands -Create, build, and validate Shopware [extensions](plugins.md) and prepare them for the [Store](https://store.shopware.com/de/) or distribution. Available commands include: +Create, build, and validate Shopware [extensions](plugins/) and prepare them for the [Store](https://store.shopware.com/de/) or distribution. Available commands include: ```bash shopware-cli extension fix # Fix an extension @@ -120,7 +120,7 @@ shopware-cli extension validate # Validate an extension Publish and manage your extensions in the [Store](https://store.shopware.com/de/), with commands such as: ```bash -shopware-cli store login # Login to Shopware Store portal.
store +shopware-cli store login # Login to Shopware Store portal.store shopware-cli token: Manage tokens for Store authentication ``` diff --git a/products/extensions/subscriptions/guides/mixed-checkout.md b/products/extensions/subscriptions/guides/mixed-checkout.md index d2c1967792..7a563d9780 100644 --- a/products/extensions/subscriptions/guides/mixed-checkout.md +++ b/products/extensions/subscriptions/guides/mixed-checkout.md @@ -92,7 +92,7 @@ As any subsequent orders are generated per subscription, the orders will contain ## Manipulate mixed cart -With subscription mixed carts, you manipulate the main cart as [you are used to](../../../../guides/plugins/plugins/checkout/cart). +With subscription mixed carts, you manipulate the main cart as [you are used to](../../../../guides/plugins/plugins/checkout/cart/). This is different from the [separate checkout](./separate-checkout.md#manipulate-subscription-cart), where you manipulate a separate subscription cart directly, e.g. by subscription scoped cart processors or separate Store API routes. Therefore, to support mixed carts, your cart collectors and processors should process both subscription carts and regular carts, so they need to be tagged with `subscription.cart.collector` (or `subscription.cart.processor`) as well as `shopware.cart.collector` (or `shopware.cart.processor`). If you need to differentiate between main and subscription cart calculations, check the sales channel context for the [subscription extension](../concept.md#subscription-context). diff --git a/resources/guidelines/testing/store/quality-guidelines-plugins/index.md b/resources/guidelines/testing/store/quality-guidelines-plugins/index.md index 87b2eafe3e..643c20989d 100644 --- a/resources/guidelines/testing/store/quality-guidelines-plugins/index.md +++ b/resources/guidelines/testing/store/quality-guidelines-plugins/index.md @@ -411,7 +411,7 @@ The following statements will be blocked as of 1st Oct. 2022: There are Cypress tests for Shopware 6 on GitHub. The project is driven by the *Friends of Shopware* group. You can contribute at any time: -* Link: [Developer Documentation Cypress Tests for Shopware 6](../../../../../guides/plugins/plugins/testing/end-to-end-testing) +* Link: [Developer Documentation Cypress Tests for Shopware 6](../../../../../guides/plugins/plugins/testing/end-to-end-testing/) * Link: [Cypress Tests for Shopware 6](https://github.com/shopware/shopware/tree/trunk/src/Administration/Resources) ### Useful tool for plugin development and extension management diff --git a/resources/guidelines/troubleshooting/performance.md b/resources/guidelines/troubleshooting/performance.md index 9cc32cdb00..fc9c497d9a 100644 --- a/resources/guidelines/troubleshooting/performance.md +++ b/resources/guidelines/troubleshooting/performance.md @@ -15,7 +15,7 @@ When you use a `contains` filter in dynamic product groups (especially when you The reason is that the underlying SQL query is not and cannot be optimized for this kind of filter. When you use OpenSearch instead of relying on the DB for searching, this issue should be resolved. Alternatively, for using `contains` on custom fields, it should be preferred to create individual bool custom fields for the different values and check those instead. -When contains on usual fields is used and slow, it should help to add a [custom field](../../guides/plugins/plugins/framework/custom-field/) and manually manage that. +When contains on usual fields is used and slow, it should help to add a [custom field](../../../guides/plugins/plugins/framework/custom-field/index) and manually manage that. Alternatively, [tags](https://docs.shopware.com/en/shopware-6-en/settings/tags) can be used for this purpose. ### Cache is invalided too often @@ -26,7 +26,7 @@ In general, it means that probably there is a background process running that le This could be more obvious cases like cron jobs manually clearing the cache or more subtle cases like your ERP system syncing products frequently, which will lead to cache invalidations of all pages where those products are referenced. For cases like the latter, there is the option to only clear the cache delayed and not immediately ([this will be the new default starting with shopware 6.7.0.0](https://github.com/shopware/shopware/blob/trunk/UPGRADE-6.7.md#delayed-cache-invalidation)). -You might consider [activating this feature](../../guides/hosting/performance/performance-tweaks.md#delayed-invalidation) in older versions. +You might consider [activating this feature](../../../guides/hosting/performance/performance-tweaks#redis-for-delayed-cache-invalidation) in older versions. ### High Memory Usage @@ -36,5 +36,5 @@ If the `APP_ENV` is set to `dev` Shopware keeps many objects for debugging purpo If the memory usage issue persists after setting `APP_ENV` to `prod`, check if you are using the [sync API](https://shopware.stoplight.io/docs/admin-api/faf8f8e4e13a0-bulk-payloads). Also consider changing the `indexing-behavior` to your needs if you need to sync many entities. Another reason for high memory usage might be the logging within the application. -See the logging section in the [performance guide](../../guides/hosting/performance/performance-tweaks.md#logging) for more information. +See the logging section in the [performance guide](../../../guides/hosting/performance/performance-tweaks#logging) for more information. After all, you still can make use of tools like blackfire.io to find the root cause of the memory usage.