CarDealsArchiveBanner
Archive/listing of car deals, optionally with filters.
Includes the common banner props.

Props
CMS id.
If true, filters UI is hidden.
Backend query string used to fetch the listing.
URL filtering behavior
The deal archive persists interactive filter state in the URL.
- With
hideFilters = false, URL filters have priority over CMS defaults. - CMS defaults (
query) are used only when URL contains no filter state. - With
hideFilters = true, URL filter state is ignored and CMS defaults are enforced.
CMS price mode default
Deal archives support a CMS-only price display default. In the banner’s Query
field, add a query-param row with the key PRICE_MODE and the value NET or
GROSS.
PRICE_MODE=NET
PRICE_MODE=GROSSThe value is case-insensitive and controls the initial price mode used for the archive request, price filtering and rendered deal prices. It is not an interactive deal filter and should not be added to the URL filter state.
The user can still switch between net and gross prices with the available
price-mode switch. That user choice then replaces the CMS default for the
current interaction. If PRICE_MODE is omitted, the shared default is gross.
Supported Query Params
The query prop accepts a standard URL query string.
Multiple params are combined via &.
ID
Filters by deal id.
- Key:
ID - Type:
string(repeatable) - Note: If at least one
IDis present, all other archive filters are ignored.sort,order, andpagestill apply.
Examples:
ID=deal_123 ID=deal_123&ID=deal_456
Brand
Filters by manufacturer.
- Key:
BRAND - Type:
string - Value: Arbitrary brand name (must match backend data exactly)
Examples:
BRAND=BMW BRAND=MINI BRAND=Volkswagen
Multiple brands:
BRAND=BMW&BRAND=MINI
Tag
Filters by deal tag name.
- Key:
TAG - Type:
string(repeatable) - Value: Tag
name - Matching: If multiple
TAGvalues are present, a deal matches when it has at least one of them.
Examples:
TAG=sofort-verfuegbar TAG=leasingdeal&TAG=aktion
Series
Filters by model series.
- Key:
SERIES - Type:
string - Value: Arbitrary series name (must match backend data exactly)
Examples:
SERIES=3 Series SERIES=A4 SERIES=Model 3
Combined with brand:
BRAND=BMW&SERIES=3 Series
Offer type
Filters by deal offer type.
- Key:
OFFER_TYPE - Type:
DealOfferTypeType - Allowed values:
PRIVAT
COMMERCIAL
BUSINESS
SPECIALExamples:
OFFER_TYPE=PRIVAT OFFER_TYPE=BUSINESS
Fuel type
Filters by drivetrain / fuel type.
- Key:
FUEL - Type:
string(repeatable) - Allowed values (CarFuelType / FuelType compatibility):
1 PETROL
2 DIESEL
3 LPG
4 CNG
6 ELECTRICITY
7 HYBRID
8 HYDROGENIUM
9 ETHANOL
10 HYBRID_DIESELUnsupported numeric inventory values are ignored server-side:
0 Other
11 BiFuelExamples:
FUEL=ELECTRICITY
FUEL=6
FUEL=HYBRID
FUEL=DIESEL
FUEL=1&FUEL=7Combined Example
BRAND=BMW&TAG=aktion&OFFER_TYPE=PRIVAT&FUEL=PETROL
Sort options
Use the serialized enum values from @haendlerapp/types/src/enums/SortOption.ts
and OrderOption.ts when configuring CMS query params.
Lifecycle
-
Neueste Deals zuerst
sort=CREATED_AT&order=DESC -
Älteste Deals zuerst
sort=CREATED_AT&order=ASC -
Zuletzt aktualisiert
sort=UPDATED_AT&order=DESC -
Am längsten unverändert
sort=UPDATED_AT&order=ASC
Validity
-
Gültig ab: Neueste zuerst
sort=VALID_FROM&order=DESC -
Gültig ab: Älteste zuerst
sort=VALID_FROM&order=ASC -
Gültig bis: Bald zuerst
sort=VALID_UNTIL&order=ASC -
Gültig bis: Später zuerst
sort=VALID_UNTIL&order=DESC
Pricing (Gross)
-
Monatsrate: Niedrig → Hoch
sort=MONTHLY_RATE_GROSS&order=ASC -
Monatsrate: Hoch → Niedrig
sort=MONTHLY_RATE_GROSS&order=DESC -
Kaufpreis: Niedrig → Hoch
sort=PURCHASE_PRICE_GROSS&order=ASC -
Kaufpreis: Hoch → Niedrig
sort=PURCHASE_PRICE_GROSS&order=DESC -
Gesamtpreis: Niedrig → Hoch
sort=TOTAL_PRICE_GROSS&order=ASC -
Gesamtpreis: Hoch → Niedrig
sort=TOTAL_PRICE_GROSS&order=DESC -
Rabatt: Hoch → Niedrig
sort=DISCOUNT_AMOUNT_GROSS&order=DESC -
Rabatt: Niedrig → Hoch
sort=DISCOUNT_AMOUNT_GROSS&order=ASC
Contract Characteristics
-
Laufzeit: Kurz → Lang
sort=TERM_MONTHS&order=ASC -
Laufzeit: Lang → Kurz
sort=TERM_MONTHS&order=DESC -
Jahreskilometer: Niedrig → Hoch
sort=ANNUAL_MILEAGE&order=ASC -
Jahreskilometer: Hoch → Niedrig
sort=ANNUAL_MILEAGE&order=DESC
Example
const banner: CarDealsArchiveBanner = {
typename: BannerTypename.CarDealsArchiveBanner,
id: 'b_123',
title: 'Offers',
titleTag: 'h2',
titleAlign: 'left',
cssId: null,
cssClasses: null,
hideFilters: false,
query: 'BRAND=BMW&TAG=aktion&OFFER_TYPE=PRIVAT&FUEL=PETROL',
};