feat(adsense): reorganizar panel con UX mejorada y soporte 1-8 ads random

Panel AdSense reorganizado:
- Diagrama visual mostrando ubicaciones de anuncios (POST-TOP, IN-CONTENT, POST-BOTTOM, RAIL)
- Secciones colapsables por ubicación con badges de color
- Slots con descripciones claras indicando uso (Auto, In-Article, Display, etc.)

In-Content Ads mejorado:
- Soporte para 1-8 anuncios dentro del contenido
- Modo aleatorio (random) que varía posiciones en cada visita
- Configuración de mínimo/máximo de ads
- Párrafos mínimos entre anuncios configurable (2-6)
- Primer ad siempre en posición fija configurada

Archivos modificados:
- Schema v1.2.0 con 4 nuevos campos (random_mode, min_ads, max_ads, min_paragraphs_between)
- FormBuilder con diagrama visual y mejor organización
- ContentAdInjector con lógica de posicionamiento random
- Renderer con soporte para post-content-1 hasta post-content-8
- FieldMapper actualizado con nuevos campos

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-11-27 20:45:40 -06:00
parent 1a069a1336
commit 55f061df67
5 changed files with 544 additions and 188 deletions

View File

@@ -1,10 +1,10 @@
{
"component_name": "adsense-placement",
"version": "1.1.0",
"description": "Control de AdSense y Google Analytics",
"version": "1.2.0",
"description": "Control de AdSense y Google Analytics - Panel reorganizado",
"groups": {
"visibility": {
"label": "Visibilidad AdSense",
"label": "Activacion",
"priority": 10,
"fields": {
"is_enabled": {
@@ -130,18 +130,43 @@
"editable": true,
"description": "Inserta anuncios automaticamente entre parrafos"
},
"post_content_after_paragraphs": {
"type": "text",
"label": "Despues del parrafo #",
"default": "3",
"post_content_random_mode": {
"type": "boolean",
"label": "Modo aleatorio",
"default": true,
"editable": true,
"description": "Numero de parrafo despues del cual insertar"
"description": "Inserta ads en posiciones aleatorias (mejor UX)"
},
"post_content_min_ads": {
"type": "select",
"label": "Minimo de ads",
"default": "1",
"editable": true,
"options": ["1", "2", "3", "4"],
"description": "Cantidad minima de anuncios a mostrar"
},
"post_content_max_ads": {
"type": "select",
"label": "Maximo de ads",
"default": "3",
"editable": true,
"options": ["1", "2", "3", "4", "5", "6", "7", "8"],
"description": "Cantidad maxima de anuncios a mostrar"
},
"post_content_after_paragraphs": {
"type": "text",
"label": "Maximo ads en contenido",
"default": "2",
"editable": true
"label": "Primer ad despues del parrafo #",
"default": "3",
"editable": true,
"description": "Numero de parrafo despues del cual insertar el primer ad"
},
"post_content_min_paragraphs_between": {
"type": "select",
"label": "Parrafos minimos entre ads",
"default": "4",
"editable": true,
"options": ["2", "3", "4", "5", "6"],
"description": "Espacio minimo entre anuncios consecutivos"
},
"post_content_format": {
"type": "select",
@@ -270,7 +295,7 @@
}
},
"forms": {
"label": "Exclusiones",
"label": "Exclusiones y Rendimiento",
"priority": 90,
"fields": {
"exclude_categories": {