Grund: vad module-blocks är
module-blocks är den generiska kortmodulen i CCMS för att visa flera informationskort i en sektion.
Varje kort kan innehålla rubrik, text, bild och valfri CTA-knapp. Samma grund används också av flera specialvarianter (t.ex. steps, products, videos, audio) men här dokumenteras basvarianten.
Modulen är designad för hög återanvändning: samma JSON-struktur kan köras i flow, tabs eller slider utan att ändra kärninnehållet.
Val 1: kärnnycklar och struktur
Top-level ligger i blocks med nycklar som module_type, id, aria_label, section_title, section_description, columns och layout.
Innehållet skrivs i items[], där varje item kan ha:
display,title,text_htmlimage.*(cover/media)video.*ochaudio.*(valfritt)button.*för CTAappearanceochdisplay_below_desktop_class
Bakgrund för hela sektionen styrs av background.have_background, background.background_src och background.background_overlay.
Val 2: layout (flow, tabs, slider)
layout normaliseras till tre lägen:
- flow: vanligt grid med flera kort samtidigt.
- tabs: ett aktivt kort i taget med tab-navigering.
- slider: aktivt kort med pilar/pagination och valfri autoplay.
För tabs används tabs_settings (position, mobilposition, startindex och appearance). För slider används slider_settings (index_start, loop, pilar, pagination, arrows_position, auto och auto_interval).
Om ogiltiga värden skickas in faller builden tillbaka till säkra defaults, till exempel layout: flow.
Val 3: kortnivå, media och CTA
Varje item blir ett kort med egen appearance och responsklass. Bilder får automatiskt srcset/sizes från manifestet om image.src används.
Video och audio renderas i mediazonen med overlay/play-knapp. När columns=1 sätts blocks.is_one_column, vilket påverkar video-sourceval i template.
Knappen i kortet använder button.href direkt i nuvarande implementation. Till skillnad från hero/big_button finns ingen separat auto-href-resolver för blocks.button.
Val 4: kompilator och runtime-detaljer
Builden normaliserar items[] till block1..blockN och beräknar blocks.auto_display utifrån synliga kort. Template renderar idag upp till block12, så kort över tolv visas inte utan template-utökning.
slider_settings.auto_interval_ms clampas till 1000–120000 ms, och index_start clampas till antal synliga kort.
Client-scriptet bygger tabs/slider-kontroller från data-attribut i HTML. För audio i blocks renderas preload="none" i template, oavsett eventuella preload-nycklar i innehållsdata.
Val 5: schema, SEO och AI-optimering
För generiska blocks är ItemList en bra bas: ett listobjekt för sektionen och en ListItem per synligt kort.
Mappa title till name och en kort sammanfattning av text_html till description. Lägg till url när kortet har CTA-länk, och image när kortbilden är semantiskt viktig.
Undvik att duplicera globala schema-noder i modulen. Håll i stället modulens schema fokuserat på kortens innehåll och handlingar.