Gilliard block map - ACF field-groups -> Umbraco blocks (Stage B, 2026-07-24)
Measured from the client's WordPress export (tools/*.WordPress.*.xml, git-ignored), parsed by tools/seed-gen/wxr-extract.mjs. The aa-base-theme uses FIXED PHP templates + named ACF field groups (not flexible content). This maps each real group to the shared Umbraco block library; it is the Stage B reconciliation for MIGRATION-PROMPT.md section 1b. We map ONTO the Block Grid + compositions (more editable), we do NOT clone WordPress's frozen groups.
Template -> Umbraco doctype
| WP template | used by | Umbraco doctype |
|---|---|---|
page-home-2021.php | home (bienvenue-maison-gilliard) | homepage (contentBlocks grid) |
page-team.php | ~20 pages: a-propos, vinotheque, nos-valeurs, team, emploi, venues, ambassadeurs... | contentpage |
page-contact.php | contact | contentpage |
page-events.php / -temp.php | evenements, rencontres-exterieures | eventlist |
page-experience-*.php (4) | activites, activites-oenotouristiques, lieux-d-accueil, events-a-la-cave | contentpage (+ activity/venue where structured) |
page-gammes.php | gammes | contentpage + productGrid |
page-club*.php (3) | communaute (pdn/pdn-3), bon-de-reduction* | contentpage |
page-blog.php | blog | bloglist |
page-promo.php | promos | contentpage + productGrid |
page-newsletter.php | newsletter | contentpage |
| Single Product (Woo) | product detail | product (NEW, e-commerce-adjacent) |
| Single Events / Single Activités | event / activity detail | event (exists) / activity (gap) |
ACF group -> block (status: KEEP maps 1:1 / EXTEND needs fields / NEW to build)
| ACF group . field | shape | Umbraco block | status |
|---|---|---|---|
| Page Sections . Hero Page Banner + Hero Custom Banner | image + {image,title,subtitle,text,radio layout,btn} | pageHero composition | EXTEND (add heroSubtitle, heroText, heroBtn, heroLayout) |
| Page Sections . Articles de blog | {text, relationship} | childListing (related posts) | KEEP |
| Section Left/Right . Image Content Row | repeater{image, group} | mediaText (list) | KEEP |
| Intro Block | group{text title, wysiwyg body} | richIntro | KEEP |
| Home . Main Slider | slider ref | heroSlider + heroSlide (structured slider) | KEEP |
| Home . Hero Boxes | repeater{text,text,image,text} | cardCollection + card | KEEP |
| Home . Wine Selection | {text, repeater, ...} | cardCollection (products) / productGrid | KEEP (+ productGrid link) |
| Home . Activités | {group, repeater} | cardCollection | KEEP |
| Home . Section Welcome / Miss Swiss / Hero Banner(-Welcome) | image+text bands | mediaText / heroSlide | KEEP |
| Home . Newsletter | {image, textarea, text} | newslettersignup | KEEP |
| Home . Feed insta | {text, text} | mediagallery | KEEP |
| Page Maison Gilliard . Main Info Block | repeater{text, wysiwyg, repeater info-box} | richIntro + cardCollection/card | KEEP |
| Page Maison Gilliard . Team Info | {hide, title, text, repeater categories, repeater person_box} | teamGrid + teamGroup + person | KEEP |
| Page Maison Gilliard . Vacancies | {hide, title, text} | richIntro + childListing | KEEP |
| Page Maison Gilliard . Contact Form CTA | {title, label, form title, shortcode} | formBlock (+ ctaBanner) | KEEP |
| Contact . Contact Info Box | repeater{text, wysiwyg, image} | cardCollection + card | KEEP |
| Contact . Contact form Title + Acf Map | text + google_map | formBlock + map | KEEP |
| Page Events . Events | repeater{startDate, endDate, title, image, wysiwyg, link, ...} | eventList -> event + scheduleFacts | KEEP |
| Single Events . Event Row / date / form | repeater{image,group} + date + form | mediaText + scheduleFacts + formBlock | KEEP |
| Single Activités . Activités Row / En bref / Carrousel / Booking / CTA | rows + facts + carousel + booking | mediaText + cardCollection + formBlock (+ activityFacts) | EXTEND (activity facts: price/location/icon) |
| Nos lieux d'accueil . Activités Row / Events | repeaters | mediaText + cardCollection + venue/venueList | KEEP |
| Single Product . Additional Info | group{6 text specs} | product doctype + productSpecs | NEW (e-commerce-adjacent, visual only) |
| Page Club PDN . Related Products | {text, text} product refs | productGrid | NEW |
| Website Fields / User / Category / *Type / default quantity / promo banner | site/taxonomy/product config | siteSettings + taxonomy (not page bands) | KEEP / n-a |
Gaps to build in Stage C (the ONLY new work)
- EXTEND
pageHero: addheroSubtitle(RTE/textarea),heroText,heroCtaLabel+heroCtaLink,heroLayout(radio left|center). Live's "Hero Custom Banner" carries all of these; our pageHero only has image/pretitle/title/banniere. (Same subtitle gap seen in the PDN hero work.) Shared composition -> benefits all brands. One ModelsBuilder cycle. - NEW
productGridblock + aproductdetail rendering (e-commerce-adjacent, IN scope visually per the 2026-07-24 clarification): product cards grid + a product page withAdditional Infospecs. Representative content; cart/checkout/real data wired later; buy links -> live. - EXTEND activity detail:
activityFactscomposition (price / location / icon / booking-toggle) for Single Activités, OR reuse the chevaliersactivitydoctype pattern. Decide in Stage C.
Dedupe / lean confirmation
- Many groups collapse to the SAME three blocks (
mediaText,cardCollection,richIntro) - confirms the shared library is correct and no per-band doctypes are needed. - Page Club PDN's 3 near-duplicate ACF groups (PDN / copy / PDN-2) -> ONE
contentpage. - page-team.php's ~20 pages -> ONE
contentpage(they are the same band set with different content). - Element types stay shared across brands with unchanged aliases; per-brand BlockGrid DataType gates authoring only.
Contributors
No contributors
Changelog
No recent changes

