Foro: autor con personaje aleatorio de la cuenta
- El nombre del autor muestra un personaje ALEATORIO de la cuenta (no la id). - Nombre con <Hermandad> en dorado (oculto si el personaje no tiene guild). - Avatar = imagen de raza del personaje (raza+género). - Cajas nuevas: puntos de logros, nivel y clase (con su color de clase). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import { shouldServeAds } from '@/lib/ads'
|
||||
import { AdSenseScript } from './AdSenseScript'
|
||||
|
||||
/**
|
||||
* Etiqueta de verificación de Google AdSense, con DOS interruptores:
|
||||
* Google AdSense: etiqueta de verificación de la cuenta + script de anuncios
|
||||
* («Auto ads»: se pega en todas las páginas y Google decide dónde colocarlos).
|
||||
*
|
||||
* TRES interruptores:
|
||||
*
|
||||
* 1. `ADSENSE_CLIENT_ID` en el .env. Vacío o sin poner = no se emite nada. Es el
|
||||
* interruptor del administrador. No lleva prefijo NEXT_PUBLIC_ a propósito:
|
||||
@@ -10,10 +14,11 @@ import { shouldServeAds } from '@/lib/ads'
|
||||
* rebuildear para activarlo o desactivarlo.
|
||||
* 2. El filtro común de publicidad (`shouldServeAds`, ver lib/ads.ts): fuera para
|
||||
* admins y para quien sea rango 2+ o haya pagado alguna vez.
|
||||
*
|
||||
* Ojo: esto es solo la etiqueta de verificación de la cuenta, no carga adsbygoogle.js
|
||||
* ni escribe cookies, por eso no pasa por el banner de consentimiento (el script de
|
||||
* anuncios sí lo hace, ver components/Monetag.tsx).
|
||||
* 3. El consentimiento «Marketing» del visitante, pero SOLO para el script, en
|
||||
* <AdSenseScript/> (cliente). La <meta> se queda fuera del banner a propósito:
|
||||
* es un identificador estático de la cuenta, no carga nada ni escribe cookies,
|
||||
* y Google la quiere presente para poder verificar el sitio aunque el visitante
|
||||
* rechace los anuncios.
|
||||
*/
|
||||
export async function AdSense() {
|
||||
const client = process.env.ADSENSE_CLIENT_ID
|
||||
@@ -21,5 +26,10 @@ export async function AdSense() {
|
||||
|
||||
if (!(await shouldServeAds())) return null
|
||||
|
||||
return <meta name="google-adsense-account" content={client} />
|
||||
return (
|
||||
<>
|
||||
<meta name="google-adsense-account" content={client} />
|
||||
<AdSenseScript client={client} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
'use client'
|
||||
|
||||
import Script from 'next/script'
|
||||
import { useConsent } from './CookieConsent'
|
||||
|
||||
/**
|
||||
* Parte de cliente de AdSense: el script que de verdad pinta los anuncios
|
||||
* (adsbygoogle.js, «Auto ads»). Existe separado de <AdSense/> solo para mirar el
|
||||
* consentimiento, que vive en el navegador (cookie `ns_cookie_consent` + evento
|
||||
* `ns:consentchange`).
|
||||
*
|
||||
* A diferencia de la etiqueta <meta> de verificación, esto SÍ pasa por el banner:
|
||||
* adsbygoogle.js escribe cookies de personalización y perfila al visitante, así que
|
||||
* cargarlo sin mirar la categoría «Marketing» convertiría el banner en mentira y, con
|
||||
* visitantes en la UE, en un problema legal. Mismo criterio que <MonetagScript/>.
|
||||
*
|
||||
* `useConsent` reacciona en caliente: entra en cuanto se acepta y deja de renderizarse
|
||||
* si se revoca, sin recargar. Arranca en `false`, así que hasta confirmar el
|
||||
* consentimiento no se carga nada.
|
||||
*/
|
||||
export function AdSenseScript({ client }: { client: string }) {
|
||||
const consent = useConsent('marketing')
|
||||
if (!consent) return null
|
||||
|
||||
return (
|
||||
<Script
|
||||
src={`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${client}`}
|
||||
crossOrigin="anonymous"
|
||||
strategy="afterInteractive"
|
||||
/>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user