Each page type has two options, A runs regular GAM ads, B is a premium sponsor takeover with desktop side-skins (gutters). Switch between the Gallery view for stakeholder review and WordPress Handoff view for the template, ACF group, Sponsor CPT and GAM mapping.
Hublot 728×90, ESPN+ and DraftKings 300×250s running through the grid.
Open mockupAmazon sponsor bar, framed hero, Shop-The-Story product rail, desktop gutter skins with live product cards at 1200px+.
View Takeover ★ Widen window past 1200px to see the Amazon guttersHulu leaderboard, VAST pre-roll, Peacock MREC in the rail, Max at the bottom.
Open mockupVisa hero, branded pre-roll bumper, cardholder CTA strip, gutter skins with Visa card & stadium access at 1200px+.
View Takeover ★ Widen window past 1200px to see the Visa guttersadidas leaderboard, Mr Porter mid-gallery interstitial, Uniqlo at the bottom.
Open mockupSamsung sponsor bar, Galaxy-framed slide player, product rail, gutter skins with phone + “Space Zoom” demos at 1200px+.
View Takeover ★ Widen window past 1200px to see the Samsung gutters| Template | Mockups | WP Template File | ACF Field Group | Sponsor CPT | GAM Slots |
|---|---|---|---|---|---|
| Category Landing A · B |
landing-A.html landing-B.html |
template-category-landing.php |
group_category_landing |
sponsorship (relationship) |
/stadio/landing/header-728x90/stadio/landing/inline-300x250/stadio/landing/gutter-L/stadio/landing/gutter-R/stadio/landing/interscroller-mobile |
| Video Hub A · B |
video-A.html video-B.html |
template-video-hub.php |
group_video_hub |
sponsorship (relationship) |
/stadio/video/top-728x90/stadio/video/pre-roll-vast/stadio/video/rail-300x250/stadio/video/gutter-L/stadio/video/gutter-R/stadio/video/interscroller-mobile |
| Slideshow A · B |
slideshow-A.html slideshow-B.html |
template-slideshow.php |
group_slideshow |
sponsorship (relationship) |
/stadio/slideshow/top-728x90/stadio/slideshow/mid-interstitial/stadio/slideshow/footer-728x90/stadio/slideshow/gutter-L/stadio/slideshow/gutter-R/stadio/slideshow/interscroller-mobile |
sponsorship, public false, show_in_rest true--sp CSS var--sp-ink CSS varsponsor=amazon)standard | takeoverpostsponsorship (nullable)standard | takeoverpost type=videosponsorshipstandard | takeoversponsorship<?php /* Template Name: Category Landing */ get_header(); $layout = get_field('layout_mode'); $sponsor = get_field('sponsor'); $is_takeover = ($layout === 'takeover' && $sponsor); // GAM targeting: pass sponsor slug as key-value if ($is_takeover) { $sp_slug = get_field('gam_kv_sponsor', $sponsor->ID); add_action('wp_head', fn() => printf( '<script>googletag.pubads().setTargeting("sponsor","%s");</script>', esc_js($sp_slug) )); } ?> <?php if ($is_takeover): ?> <!-- Gutter skins only render when sponsor exists and viewport ≥ 1200px (CSS) --> <aside class="skin left"> <img src="<?= esc_url(get_field('gutter_L', $sponsor->ID)) ?>"> </aside> <aside class="skin right"> <img src="<?= esc_url(get_field('gutter_R', $sponsor->ID)) ?>"> </aside> <?php endif; ?> <main class="page-category <?= $is_takeover ? 'is-takeover' : '' ?>"> <?php get_template_part('parts/landing/hero'); ?> <?php if ($is_takeover) get_template_part('parts/landing/shop-rail', null, ['sponsor'=>$sponsor]); ?> <?php get_template_part('parts/landing/editorial-grid'); ?> </main> <?php get_footer(); ?>
sponsorship post type in /inc/cpt-sponsorship.php. Populate one real sponsor (Amazon) as the reference record./acf-json/ and sync on load. No DB-only groups.parts/landing/hero.php, parts/landing/shop-rail.php, etc. Reuse between A and B, the only branch is $is_takeover.<style> in wp_head that sets --sp and --sp-ink from the sponsor’s color fields. All B styling reads these vars, swap sponsor, swap palette.calc((100vw - 1040px)/2 - 8px) on each side. Content column is capped at 1040px so skins never overlap editorial.interscroller_creative (takeover) or GAM OOP line (regular). Frequency cap 1/session./stadio/<template>/<slot> in GAM UI. Pass sponsor=<slug> key-value on takeover pages for line-item targeting and reporting.index.html at root, all paths relative. No build step needed for the review site.