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:
@@ -7,6 +7,8 @@ import {
|
||||
TwitterXIcon,
|
||||
FacebookIcon } from
|
||||
"@/components/ui/Icons";
|
||||
import AdImage from "@/components/AdImage";
|
||||
import { ADS_728X90, shuffle } from "@/lib/ads";
|
||||
|
||||
// DO NOT OVERRIDE — Footer column structure and link targets
|
||||
const footerColumns = [
|
||||
@@ -61,20 +63,13 @@ const footerColumns = [
|
||||
export default function Footer() {
|
||||
return (
|
||||
<footer className="bg-[#0d0d0d] border-t border-[#222]">
|
||||
{/* Footer Ad Row */}
|
||||
{/* Footer Ad Row — site-wide 728x90 (rotates if multiple in pool) */}
|
||||
<div className="max-w-container mx-auto px-4 pt-8 pb-4">
|
||||
<div className="flex flex-wrap justify-center gap-4 mb-8">
|
||||
{/* DO NOT OVERRIDE — footer ad placeholder */}
|
||||
<div className="ad-placeholder w-[300px] h-[250px]">
|
||||
<AppImage
|
||||
src="https://img.rocket.new/generatedImages/rocket_gen_img_189430e3f-1768594771653.png"
|
||||
alt="Advertisement — BroadcastBeat sponsor"
|
||||
width={300}
|
||||
height={250}
|
||||
className="w-full h-full object-contain" />
|
||||
|
||||
{ADS_728X90.length > 0 && (
|
||||
<div className="flex justify-center mb-8">
|
||||
<AdImage ad={shuffle(ADS_728X90)[0]} page="footer" />
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Multi-column link section */}
|
||||
<div className="border-t border-[#222] pt-8 pb-6 grid grid-cols-2 md:grid-cols-4 gap-8">
|
||||
|
||||
Reference in New Issue
Block a user