wip-banner-system: full banner pool, stack all 300x250s, footer 728x90

Banner spec from Ryan:

- 728x90 header (every page): pool is now LiveU only; rotates when more
  728x90 entries are added to ads.ts.
- 728x90 below main menu on article pages: removed (was the article-top
  AdSlot stub).
- 728x90 footer (every page): replaces the old 300x250 rocket.new
  placeholder in Footer.tsx. Rotates from the same ADS_728X90 pool.
- 300x250 sidebar: now renders EVERY entry in ADS_300X250 stacked
  vertically, shuffled per page-view. Pool: AJA, Zixi, Telycam, LiveU,
  Lectrosonics, Opengear, Studio Hero, Magewell. Adding more entries to
  ads.ts auto-grows the stack.
- 300x600 fixed slot: Blackmagic (Adsanity ad-210571), top of sidebar,
  never rotated.

Implementation:

- ads.ts: Ad interface now allows either src (local image) or adsanity_id
  (iframe). New rotateAll() returns ALL ads of a size shuffled; pickAds
  kept for ArticleBody bounded slots.
- AdImage.tsx: dropped the legacy ADSANITY_CAMPAIGN_MAP label fallback —
  ads.ts is now the single source of truth, so Telycam (no adsanity_id)
  renders its local GIF instead of the iframe.
- SidebarAdStack.tsx: rotateAll(300x250) instead of pickAds with a
  count cap. count prop removed; callers updated.
- NewsArticleDetailClient.tsx: removed article-top 728x90 stub.
- Footer.tsx: 728x90 AdImage in place of the 300x250 placeholder.
- LeaderboardAd.tsx: deleted (was unused after the earlier home-page
  cleanup).
- PENDING_ads.md: rewritten — Adsanity IDs to verify (Studio Hero,
  Blackmagic) and optional local-file upgrades.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code
2026-05-14 15:42:54 +00:00
parent e8c7185bf7
commit 243f4855a1
8 changed files with 147 additions and 121 deletions

View File

@@ -1,41 +1,29 @@
# Pending Ad Creatives — upload to public/legacy/ads/
# Pending Ad Creatives
Images below were NOT recovered from the Wayback Machine (Wayback returned
HTML overlays instead of raw files). Ryan needs to supply these from local
storage or the original advertiser.
The active banner pool is defined in `src/lib/ads.ts`. Banners with an
`adsanity_id` render via the Adsanity iframe at
`https://ads.broadcastbeat.com/wp-content/plugins/adsanity/render.php?id=...`
and need no local file. Banners with `src` need the file in
`public/legacy/ads/`.
## 728x90 Leaderboard (1 missing)
- `Matrox_728x90_ConvertIP_Series_0722_7b13be6a.jpg`Matrox ConvertIP Series
Click URL: https://info.matrox.com/video/ad/infrastructure/broadcast/convertip-series
## Adsanity campaign IDs to verify in WordPress admin
- **Studio Hero** (currently `ad-162714`)that ID was originally mapped
to "Studio Suite"; confirm the Hero campaign exists in Adsanity and
update `ads.ts` if a different ID is correct.
- **Blackmagic 300x600** (currently `ad-210571`) — that ID is also used by
the Riedel campaign in the historical map; confirm the ATEM 4 M/E
campaign has its own ID.
## 300x600 Fixed Sidebar (1 missing — highest priority)
- `ATEM-4ME-Constellation-4K-Plus-v1g-300x600-EN_1804ac7b.jpg` — Blackmagic ATEM 4 M/E
Click URL: http://bmd.link/mRNsKu
Note: SidebarAdStack will show nothing in the 300x600 slot until this is added.
## Optional local-file upgrades
These banners currently render via Adsanity iframe. To swap to a faster
local render, drop the image into `public/legacy/ads/` and add `src` +
`alt` + `click_url` to the corresponding entry in `src/lib/ads.ts`.
## 300x250 Rotating Sidebar (20 missing)
- `Magewell_Director_One_Pro-Convert-IP-to-HDMI_Sports_InfoComm_9170d5cd.gif` — Magewell Director One
- `300x250-banner-Our-Story-film_resize_c30978de.jpg` Lectrosonics Our Story
- `Zixi_Ads_300x250_93cf5742.png` — Zixi
- `Studio-Hero-for-Broadcast-Beat_e1aaa706.png` Studio Hero
- `aja_2025_colorbox_og_colorbox_300x250_en-3_041eaa50.gif` — AJA ColorBox 2025
- `1467-NAB-300x250-R2V1-1_364334f9.png` — Dell at NAB
- `Broadcasters-report-v2-300x250-px_9b98a4c3.jpg` — JW Player Broadcasters Report
- `HPA-ad-Oct-22_44905037.png` — Puget Systems HPA
- `Broadcast-Beat-April-Banner-V1_160b8d08.jpg` — ROE Visual
- `webinar-ad_19d5c0c1.png` — Viz Flowics 2023 Webinar
- `BB_NAB1_022924-15_f127d83a.gif` — BOXX at NAB
- `October-November-ad-Broadcast-Beat-TAG-Monitoring-Layers-blo_9d37b415.jpg` — TAG Video Systems
- `Broadcast-Beat-Banner-March-2024-300x250-1_6dda0fb9.jpg` — Camplex SMPTE
- `GIF3_07_10fps_03_71177a21.gif` — BOXX animated
- `300x250_Matrox_Monarch_EDGE_Series_Flex_Your_Workflow_0924_caf31161.jpg` — Matrox Monarch EDGE
- `quantum-webinar_8db637f8.jpg` — Quantum Webinar
- `openGear-guide-2026-300x250-1_a5c4b515.png` — openGear Guide 2026
- `250417-300-x-250-ad_4e4ea2cf.png` — OpenDrives NAB 2025
- `image001-1-1_d6f7d0df.png` — Look Solutions Tiny S
- `300x250-Bolero-Mini_4c8e5038.gif` — Riedel Bolero Mini
## How to restore
1. Drop each file into `public/legacy/ads/` in the broadcastbeat repo
2. Re-add the entry to the appropriate array in `src/lib/ads.ts`
3. Push and Coolify will redeploy automatically
- AJA Video 300x250
- Zixi 300x250
- Lectrosonics 300x250
- Opengear 300x250
- Studio Hero 300x250
- Magewell 300x250
- Blackmagic 300x600 — Wayback target file:
`ATEM-4ME-Constellation-4K-Plus-v1g-300x600-EN.jpg`, link http://bmd.link/mRNsKu