Oglasna pasica pod glavo na vseh vsebinskih straneh (TopBannerAd)

This commit is contained in:
sebastjan 2026-08-15 16:58:32 +02:00
parent b5732e872d
commit 001a05fe16
9 changed files with 30 additions and 8 deletions

View File

@ -94,6 +94,20 @@ export function ArticleCardAd() {
);
}
export function TopBannerAd() {
return (
<div className="rounded-md overflow-hidden bg-card border border-card-border mb-4" data-testid="ad-top-banner">
<div className="text-[9px] text-muted-foreground/40 text-center pt-1 uppercase tracking-widest">Anzeige</div>
<AdSense
slot="4154017639"
format="horizontal"
style={{ display: "block", width: "100%", height: "90px" }}
responsive={false}
/>
</div>
);
}
export function InArticleAd() {
return (
<div className="my-6 rounded-md overflow-hidden bg-card border border-card-border" style={{ minHeight: "106px" }}>

View File

@ -2,7 +2,7 @@ import { Tv } from "lucide-react";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { usePageMeta } from "@/hooks/use-page-meta";
import { PageSideAds } from "@/components/adsense";
import { PageSideAds, TopBannerAd } from "@/components/adsense";
export default function AboutPage() {
usePageMeta("Über FOLX TV - Volksmusik & Schlager Fernsehsender", "Alles über FOLX TV Ihren Volksmusik & Schlager Fernsehsender seit 2013. Programm, Geschichte und das Team hinter dem Volksmusik-Sender.");
@ -11,6 +11,7 @@ export default function AboutPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<div className="flex items-center gap-3 mb-8">
<Tv className="w-7 h-7 text-primary" />
<h1 className="text-3xl font-bold text-foreground" data-testid="text-about-title">

View File

@ -9,7 +9,7 @@ import { Button } from "@/components/ui/button";
import { Skeleton } from "@/components/ui/skeleton";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { ArticleCardAd, PageSideAds } from "@/components/adsense";
import { ArticleCardAd, PageSideAds, TopBannerAd } from "@/components/adsense";
import { useEffect } from "react";
interface PaginatedResponse {
@ -115,6 +115,7 @@ export default function CategoryPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<Link href="/">
<Button variant="ghost" size="sm" className="mb-6 gap-2" data-testid="button-back">
<ArrowLeft className="w-4 h-4" />

View File

@ -2,7 +2,7 @@ import { Tv, Globe, MapPin } from "lucide-react";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { usePageMeta } from "@/hooks/use-page-meta";
import { PageSideAds } from "@/components/adsense";
import { PageSideAds, TopBannerAd } from "@/components/adsense";
const COUNTRIES = [
{
@ -40,6 +40,7 @@ export default function EmpfangPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<div className="flex items-center gap-3 mb-2">
<Tv className="w-7 h-7 text-primary" />
<h1 className="text-3xl font-bold text-foreground" data-testid="text-empfang-title">

View File

@ -4,7 +4,7 @@ import GalleryPage from "@/components/photo-gallery";
import { ArrowLeft } from "lucide-react";
import { Link } from "wouter";
import { usePageMeta } from "@/hooks/use-page-meta";
import { InArticleAd, PageSideAds } from "@/components/adsense";
import { InArticleAd, PageSideAds, TopBannerAd } from "@/components/adsense";
export default function GalleryPageWrapper() {
usePageMeta("Fotogalerie Einzigartige Momente von unseren Aufzeichnungen | FOLX TV", "Spannende Schnappschüsse und besondere Augenblicke, eingefangen bei unseren Aufzeichnungen. Authentische Bilder der Volksmusik- und Schlager-Stars in einzigartigen Momenten bei FOLX TV.");
@ -13,6 +13,7 @@ export default function GalleryPageWrapper() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<Link href="/">
<button className="flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors mb-6 text-sm" data-testid="button-back">
<ArrowLeft className="w-4 h-4" />

View File

@ -4,7 +4,7 @@ import { SiFacebook, SiInstagram, SiYoutube, SiTiktok } from "react-icons/si";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { usePageMeta } from "@/hooks/use-page-meta";
import { PageSideAds } from "@/components/adsense";
import { PageSideAds, TopBannerAd } from "@/components/adsense";
import { apiRequest } from "@/lib/queryClient";
export default function KontaktPage() {
@ -42,6 +42,7 @@ export default function KontaktPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<div className="flex items-center gap-3 mb-8">
<Mail className="w-7 h-7 text-primary" />
<h1 className="text-3xl font-bold text-foreground" data-testid="text-kontakt-title">

View File

@ -4,7 +4,7 @@ import { ChefHat, Clock, Users, X, ChevronLeft } from "lucide-react";
import { usePageMeta } from "@/hooks/use-page-meta";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { InArticleAd, PageSideAds } from "@/components/adsense";
import { InArticleAd, PageSideAds, TopBannerAd } from "@/components/adsense";
interface Recipe {
title: string;
@ -304,6 +304,7 @@ export default function RecipesPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<div className="flex items-center gap-3 mb-2">
<Link href="/">
<button className="text-muted-foreground hover:text-foreground transition-colors" data-testid="button-recipes-back">

View File

@ -4,7 +4,7 @@ import { Link, useSearch, useLocation } from "wouter";
import { Search, Play, FileText, ArrowLeft } from "lucide-react";
import { usePageMeta } from "@/hooks/use-page-meta";
import Header from "@/components/header";
import { PageSideAds } from "@/components/adsense";
import { PageSideAds, TopBannerAd } from "@/components/adsense";
interface SearchResult {
articles: {
@ -79,6 +79,7 @@ export default function SearchPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
<TopBannerAd />
<Link href="/">
<button className="flex items-center gap-1 text-muted-foreground hover:text-foreground text-sm mb-4 transition-colors" data-testid="link-back-home">
<ArrowLeft className="w-4 h-4" />

View File

@ -9,7 +9,7 @@ import { Button } from "@/components/ui/button";
import { Skeleton } from "@/components/ui/skeleton";
import Header from "@/components/header";
import Footer from "@/components/footer";
import { ArticleCardAd, PageSideAds } from "@/components/adsense";
import { ArticleCardAd, PageSideAds, TopBannerAd } from "@/components/adsense";
import { useEffect } from "react";
interface PaginatedResponse {
@ -120,6 +120,7 @@ export default function VideosPage() {
<Header />
<PageSideAds />
<main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
<TopBannerAd />
<Link href="/">
<button className="flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors mb-6 text-sm" data-testid="button-back">
<ArrowLeft className="w-4 h-4" />