Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions public/ads.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
google.com, pub-3004906966180197, DIRECT, f08c47fec0942fa0
34 changes: 27 additions & 7 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { NextLayout, NextProvider } from '@/components/Provider';
import { pretendard } from '@/utils/fonts';
import { cn } from '@/utils/style';
import { GoogleAnalytics, GoogleTagManager } from '@next/third-parties/google';
import type { Metadata } from 'next';
import Script from 'next/script';
import './globals.css';

export const metadata: Metadata = {
Expand Down Expand Up @@ -48,13 +50,6 @@ export default function RootLayout({
}>) {
return (
<html lang="ko">
<head>
<script
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3004906966180197"
crossOrigin="anonymous"
></script>
</head>
<body
className={cn(
'relative flex min-h-screen flex-col bg-white text-content',
Expand All @@ -64,6 +59,31 @@ export default function RootLayout({
<NextProvider>
<NextLayout>{children}</NextLayout>
</NextProvider>

<Script
src="https://cdn.iamport.kr/v1/iamport.js"
async
strategy="lazyOnload"
/>
{/* Google Analytics */}
{process.env.GOOGLE_ANALYTICS && (
<GoogleAnalytics gaId={process.env.GOOGLE_ANALYTICS} />
)}

{/* Google Tag Manager */}
{process.env.GOOGLE_TAG && (
<GoogleTagManager gtmId={process.env.GOOGLE_TAG} />
)}

{/* Google AdSense */}
{process.env.GOOGLE_ADSENSE_CLIENT_ID && (
<Script
async
src={`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${process.env.GOOGLE_ADSENSE_CLIENT_ID}}`}
crossOrigin="anonymous"
strategy="lazyOnload"
/>
)}
</body>
</html>
);
Expand Down
25 changes: 25 additions & 0 deletions src/components/GoogleAdSenseComponent.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'use client';

import { useEffect } from 'react';

declare global {
interface Window {
adsbygoogle: any;
}
}

export const GoogleAdSenseComponent = () => {
useEffect(() => {
(window.adsbygoogle = window.adsbygoogle || []).push({});
}, []);

return (
<ins
className="adsbygoogle block"
data-ad-client="PID"
data-ad-slot="SLOT_KEY"
data-ad-format="auto"
data-full-width-responsive="true"
/>
);
};
26 changes: 1 addition & 25 deletions src/components/Provider.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
'use client';

import { GoogleAnalytics, GoogleTagManager } from '@next/third-parties/google';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { SessionProvider } from 'next-auth/react';
import Head from 'next/head';
import { Suspense } from 'react';
import Footer from './Footer/Footer';
import Header from './Header/Header';
Expand Down Expand Up @@ -40,29 +38,7 @@ export const NextProvider = ({ children }: Props) => {
export const NextLayout = ({ children }: Props) => {
return (
<div className="box-border max-h-screen min-h-screen w-full">
<div className="px-4 flex flex-1 flex-col sm:px-8 md:px-16 lg:px-32 xl:px-32">
<Head>
<script src="https://cdn.iamport.kr/v1/iamport.js" async />
{/* Google Analytics */}
{process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS && (
<GoogleAnalytics gaId={process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS} />
)}

{/* Google Tag Manager */}
{process.env.NEXT_PUBLIC_GOOGLE_TAG && (
<GoogleTagManager gtmId={process.env.NEXT_PUBLIC_GOOGLE_TAG} />
)}

{/* Google AdSense */}
{process.env.NEXT_PUBLIC_GOOGLE_ADSENSE_CLIENT_ID && (
<script
async
src={`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${process.env.NEXT_PUBLIC_GOOGLE_ADSENSE_CLIENT_ID}}`}
crossOrigin="anonymous"
></script>
)}
</Head>

<div className="px-16 flex flex-1 flex-col sm:px-24 md:px-32 lg:px-40 xl:px-48">
<Header />
<main className="mt-20 flex flex-1 flex-col ">{children}</main>
<ToasterContext />
Expand Down
Loading