ads.
This commit is contained in:
parent
9c5f7beb91
commit
f872fb64b2
|
|
@ -1,5 +1,4 @@
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import Script from 'next/script';
|
|
||||||
import '@/styles/globals.css';
|
import '@/styles/globals.css';
|
||||||
import { Providers } from '@/components/Providers';
|
import { Providers } from '@/components/Providers';
|
||||||
import MarketingLayout from './MarketingLayout';
|
import MarketingLayout from './MarketingLayout';
|
||||||
|
|
@ -63,12 +62,6 @@ export default function MarketingGroupLayout({
|
||||||
type="application/ld+json"
|
type="application/ld+json"
|
||||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema()) }}
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema()) }}
|
||||||
/>
|
/>
|
||||||
<Script
|
|
||||||
async
|
|
||||||
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2782770414424875"
|
|
||||||
crossOrigin="anonymous"
|
|
||||||
strategy="lazyOnload"
|
|
||||||
/>
|
|
||||||
<MarketingLayout>
|
<MarketingLayout>
|
||||||
{children}
|
{children}
|
||||||
</MarketingLayout>
|
</MarketingLayout>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Script from 'next/script';
|
|
||||||
import AdBanner from '@/components/ads/AdBanner';
|
import AdBanner from '@/components/ads/AdBanner';
|
||||||
|
|
||||||
export default function ToolsLayout({
|
export default function ToolsLayout({
|
||||||
|
|
@ -11,8 +10,7 @@ export default function ToolsLayout({
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col min-h-screen">
|
<div className="flex flex-col min-h-screen">
|
||||||
{/* AdSense script - only loads on tool pages */}
|
{/* AdSense script - managed by global AdSenseScript component */}
|
||||||
{/* AdSense script - now global in (marketing) layout */}
|
|
||||||
<div className="flex-grow relative">
|
<div className="flex-grow relative">
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import type { Metadata } from 'next';
|
||||||
import { Suspense } from 'react';
|
import { Suspense } from 'react';
|
||||||
import '@/styles/globals.css';
|
import '@/styles/globals.css';
|
||||||
import { Providers } from '@/components/Providers';
|
import { Providers } from '@/components/Providers';
|
||||||
|
import AdSenseScript from '@/components/ads/AdSenseScript';
|
||||||
|
|
||||||
const isIndexable = process.env.NEXT_PUBLIC_INDEXABLE === 'true';
|
const isIndexable = process.env.NEXT_PUBLIC_INDEXABLE === 'true';
|
||||||
|
|
||||||
|
|
@ -56,6 +57,7 @@ export default function RootLayout({
|
||||||
<body className="font-sans">
|
<body className="font-sans">
|
||||||
<Suspense fallback={null}>
|
<Suspense fallback={null}>
|
||||||
<Providers>
|
<Providers>
|
||||||
|
<AdSenseScript />
|
||||||
{children}
|
{children}
|
||||||
</Providers>
|
</Providers>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
'use client';
|
||||||
|
|
||||||
|
import Script from 'next/script';
|
||||||
|
import { usePathname } from 'next/navigation';
|
||||||
|
|
||||||
|
export default function AdSenseScript() {
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
|
// Paths where ads should NOT be shown
|
||||||
|
const excludedPaths = [
|
||||||
|
'/', // English Home
|
||||||
|
'/de', // German Home
|
||||||
|
'/pricing', // Pricing Page
|
||||||
|
'/login', // Login
|
||||||
|
'/signup', // Signup
|
||||||
|
'/forgot-password', // Forgot Password
|
||||||
|
'/qr-code-erstellen', // German landing page
|
||||||
|
'/dashboard', // App Dashboard
|
||||||
|
'/settings', // App Settings
|
||||||
|
'/analytics', // App Analytics
|
||||||
|
'/qr', // QR Creation/Management
|
||||||
|
'/create', // Create Flow
|
||||||
|
];
|
||||||
|
|
||||||
|
// Check if current path starts with any excluded path
|
||||||
|
// We add '/' to excluded path to match exact path or subpaths,
|
||||||
|
// EXCEPT for root '/' which needs special handling
|
||||||
|
const shouldExclude = excludedPaths.some(path => {
|
||||||
|
if (path === '/') {
|
||||||
|
return pathname === '/';
|
||||||
|
}
|
||||||
|
return pathname === path || pathname?.startsWith(`${path}/`);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (shouldExclude) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Script
|
||||||
|
async
|
||||||
|
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2782770414424875"
|
||||||
|
crossOrigin="anonymous"
|
||||||
|
strategy="lazyOnload"
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue