Skip to Content
BannersCarDealsArchiveBanner

CarDealsArchiveBanner

Archive/listing of car deals, optionally with filters.

Includes the common banner props.

Car deal archive preview

Props

id
string
required

CMS id.

hideFilters
boolean
required

If true, filters UI is hidden.

query
string
required

Backend query string used to fetch the listing.

URL filtering behavior

The deal archive persists interactive filter state in the URL.

  1. With hideFilters = false, URL filters have priority over CMS defaults.
  2. CMS defaults (query) are used only when URL contains no filter state.
  3. 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=GROSS

The 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 ID is present, all other archive filters are ignored. sort, order, and page still 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 TAG values 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 SPECIAL

Examples:

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_DIESEL

Unsupported numeric inventory values are ignored server-side:

0 Other 11 BiFuel

Examples:

FUEL=ELECTRICITY FUEL=6 FUEL=HYBRID FUEL=DIESEL FUEL=1&FUEL=7

Combined 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', };
Last updated on