fix(adsense): Anchor ocultos por defecto + más tamaños Vignette

Anchor Ads:
- Ocultos por defecto via CSS (opacity: 0, visibility: hidden)
- Solo se muestran cuando AdSense llena el slot (clase .ad-loaded)
- Ya no aparece espacio en blanco si no hay anuncio

Vignette Ads:
- Agregados tamaños: 728x90, 970x250, 970x90, 468x60, 320x100
- Nueva opción "auto" (recomendado) para formato automático
- Renderer actualizado para manejar todos los tamaños

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-11-28 21:25:54 -06:00
parent 1f0ce58b22
commit 13beaf7b06
3 changed files with 57 additions and 28 deletions

View File

@@ -593,7 +593,7 @@ final class AdsensePlacementRenderer
// === CSS via CSSGenerator ===
$cssRules = [];
// Base anchor styles
// Base anchor styles - OCULTO POR DEFECTO hasta que AdSense llene el slot
$cssRules[] = $this->cssGenerator->generate('.roi-anchor-ad', [
'position' => 'fixed',
'left' => '0',
@@ -606,6 +606,16 @@ final class AdsensePlacementRenderer
'display' => 'flex',
'align-items' => 'center',
'justify-content' => 'center',
'opacity' => '0',
'visibility' => 'hidden',
'pointer-events' => 'none',
]);
// Mostrar anchor cuando AdSense llena el slot
$cssRules[] = $this->cssGenerator->generate('.roi-anchor-ad.ad-loaded', [
'opacity' => '1',
'visibility' => 'visible',
'pointer-events' => 'auto',
]);
$cssRules[] = $this->cssGenerator->generate('.roi-anchor-ad-top', [
@@ -884,11 +894,13 @@ final class AdsensePlacementRenderer
$html = "<style id=\"roi-vignette-css\">{$css}</style>\n";
// Determinar estilo de anuncio segun tamano
$adStyle = $size === 'responsive'
? 'display:block;min-width:300px;min-height:250px'
: sprintf('display:inline-block;width:%dpx;height:%dpx', $adWidth, $adHeight);
$adFormat = $size === 'responsive' ? ' data-ad-format="auto" data-full-width-responsive="true"' : '';
if ($size === 'auto' || $size === 'responsive') {
$adStyle = 'display:block;min-width:300px;min-height:250px';
$adFormat = ' data-ad-format="auto" data-full-width-responsive="true"';
} else {
$adStyle = sprintf('display:inline-block;width:%dpx;height:%dpx', $adWidth, $adHeight);
$adFormat = '';
}
$closeDelayClass = $closeDelay > 0 ? ' delayed' : '';
@@ -937,6 +949,12 @@ final class AdsensePlacementRenderer
return match($size) {
'300x250' => [300, 250],
'336x280' => [336, 280],
'728x90' => [728, 90],
'970x250' => [970, 250],
'970x90' => [970, 90],
'468x60' => [468, 60],
'320x100' => [320, 100],
'auto', 'responsive' => [0, 0], // Tamaños dinamicos
default => [300, 250],
};
}