Release notes Shopware 6.6.10.0
Abstract
This minor release contains improvements like MySQL invalidator storage, external media URLs via API, even more A11y improvents and more. Additionally, 10+ bugs had been fixed.
System requirements
- tested on PHP 8.2 and 8.3
- tested on MySQL 8 and MariaDB 10.11
Improvements
Upgrade to Symfony 7.2
- Changed
symfony/*
dependencies to^7.2
Addition of MySQLInvalidatorStorage
- Introduced
/Shopware/Core/Framework/Adapter/Cache/InvalidatorStorage/MySQLInvalidatorStorage
to collect and handle cache invalidations in MySQL as an atomic operation. - This new storage option allows delayed cache invalidation without requiring Redis (although Redis remains the recommended solution).
- To switch to MySQL for delayed cache invalidation, update your configuration as follows:
shopware:
cache:
invalidation:
delay: 1
delay_options:
storage: mysql
[A11y-HTML] Offer HTML alternative to our pdf standard documents
- Besides the existing PDF document which is based on DOMPDF, we added our standard document as HTML documents for fulfilling the A11y criteria.
Introduce global template data for language and navigation
Some of the data for the Twig template in the storefront, like the current currency or navigation ID, should not depend on the current page object; instead, the should be available globally and independently. The following changes facilitate the introduction of those global template data:
- Added new Twig function
sw_breadcrumb_full_by_id
to get the full breadcrumb for a category ID. - Added /Shopware/Storefront/Framework/Twig/NavigationInfo to the global shopware Twig variable, to provide the ID of the main navigation and the current navigation path as ID list.
- Added
minSearchLength
to the global Shopware Twig variable, which defines the minimum search term length. - Added
showStagingBanner
to the global shopware Twig variable, which defines if the staging banner should be shown. - Deprecated the global
showStagingBanner
Twig variable. Useshopware.showStagingBanner
instead. - Deprecated the usage of the header and footer properties of page Twig objects outside the dedicated header and footer templates. Use the following alternatives instead:
context.currency
instead ofpage.header.activeCurrency
shopware.navigation.id
instead ofpage.header.navigation.active.id
shopware.navigation.pathIdList
instead ofpage.header.navigation.active.path
context.saleschannel.languages.first
instead ofpage.header.activeLanguage
- Added new optional parameter
serviceMenu
of type /Shopware/Core/Content/Category/CategoryCollection to /Shopware/Storefront/Pagelet/Footer/FooterPagelet. It will be required in the next major version.
Introduce Edge Side Includes (ESI) for header and footer
With the next major version, the header and footer will be loaded via ESI. Due to this change, many things were deprecated and will be removed with the next major version, as they are not needed anymore (Please refer to the changelog for a detailed list of associated deprecations).
- This changes are currently behind the
cache_rework
flag. - The header and footer are now loaded via ESI. This allows to cache the header and footer separately from the rest of the page.
- Two new routes
/header
and/footer
were added to receive the rendered header and footer. - The rendered header and footer are included into the page with the Twig function
render_esi
, which calls the previously mentioned routes. - Two new templates
src/Storefront/Resources/views/storefront/layout/header.html.twig
andsrc/Storefront/Resources/views/storefront/layout/footer.html.twig
were introduced as new entry points for the header and footer. - Make sure to adjust your template extensions to be compatible with the new structure. The block names are still the same, so it just should be necessary to extend from the new templates.
Removal of the asterisk next to every price
- When activating the
ACCESSIBILITY_TWEAKS
feature flag the price asterisk * are no longer displayed next to every price. A text link for tax and shipping information is displayed instead.
Bulk entity extension
- Deprecated EntityExtension::getDefinitionClass. It will be replaced by
EntityExtension::getEntityName
, which needs to return the entity name.
Before:
<?php
namespace Examples\Extension;
use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;
class MyEntityExtension extends EntityExtension
{
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
After:
<?php
namespace Examples\Extension;
use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;
class MyEntityExtension extends EntityExtension
{
public function getEntityName() : string
{
return ProductDefinition::ENTITY_NAME;
}
}
Using external URL for media's path without storing physical files
- You can now store media paths as external URLs using the admin API. This allows more flexible media management without the need to store physical files on the server.
Example Request:
POST http://sw.test/api/media
Content-Type: application/json
{
"id": "01934e0015bd7174b35838bbb30dc927",
"mediaFolderId": "01934ebfc0da735d841f38e8e54fda09",
"path": "https://test.com/photo/2024/11/30/sunflowers.jpg",
"fileName": "sunflower",
"mimeType": "image/jpeg"
}
Add aggregate admin api
- Added generic
/api/aggregate/{entityName}
API. It is similar to already existing/api/search/${entityName}
, but without loading entities
Updated Menu Structure in Settings Page
- The settings page has been reorganized into groups for better usability.
Extension developers which extend or customize the settings menu has to make sure that their changes are compatible with the new structure.
The old menu structure in the settings page is deprecated and will be removed inv6.7.0.0
.
(Please refer to the changelog for a detailed list of associated deprecations).
Fixed bugs
- NEXT-40478 - Elasticsearch indexing for orders for administration is really slow
- NEXT-40385 - No optional config fields in Shopware 6.6.9.0 in theme.json
- NEXT-40210 - admin watcher ignores HOST & PORT env
- NEXT-40100 - Struct clone behaviour causes errors with readonly properties
- NEXT-40084 - item in warehouse not available when stock 0
- NEXT-40053 - Promotion action buttons have initialization issues and send incorrect entity IDs
- NEXT-39764 - Cloud Very long loading & crash from website with many promotion codes
- NEXT-39718 - Restoring currency inheritance breaks advanced pricing
- NEXT-39645 - A11y: Subscriptions - lacking descriptive page titles
- NEXT-39643 - A11y: Employee Management - error handling on detail pages for VO
Credits
Thanks to all diligent friends for helping us make Shopware better and better with each pull request!
More resources
- Detailed diff on Github to the former version
- Changelog on GitHub for this version
- Release News on corporate blog
- Installation overview
- Update from a previous installation
Get in touch
Discuss about decisions, bugs you might stumble upon, etc in our community slack. See you there 😉