From ce19345f78249f2b7260e3f36c23395b2a016f30 Mon Sep 17 00:00:00 2001 From: FrankZamora Date: Thu, 27 Nov 2025 21:44:18 -0600 Subject: [PATCH] feat(rail-ads): Add more format options with multiple widths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added width options: 130px, 140px, 150px, 160px, 300px, 400px, 500px, 600px - Each width has multiple height options (300, 400, 500, 600, etc.) - Total of 31 format combinations available - Updated Schema, Renderer and FormBuilder 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../Ui/AdsensePlacementFormBuilder.php | 48 +++++++++++++++---- .../Ui/AdsensePlacementRenderer.php | 35 +++++++++++++- Schemas/adsense-placement.json | 38 +++++++++++---- 3 files changed, 102 insertions(+), 19 deletions(-) diff --git a/Admin/AdsensePlacement/Infrastructure/Ui/AdsensePlacementFormBuilder.php b/Admin/AdsensePlacement/Infrastructure/Ui/AdsensePlacementFormBuilder.php index 2272e99b..5620b796 100644 --- a/Admin/AdsensePlacement/Infrastructure/Ui/AdsensePlacementFormBuilder.php +++ b/Admin/AdsensePlacement/Infrastructure/Ui/AdsensePlacementFormBuilder.php @@ -462,19 +462,49 @@ final class AdsensePlacementFormBuilder $html .= ' '; $html .= ''; - // Format select - Opciones de altura para anuncios verticales + // Format select - Multiples anchos y alturas disponibles $railFormat = $this->renderer->getFieldValue($cid, 'behavior', 'rail_format', 'skyscraper'); $html .= $this->buildSelect($cid . 'RailFormat', 'Formato', $railFormat, [ - 'slim-small' => 'Slim Small (160x300)', - 'slim-medium' => 'Slim Medium (160x400)', - 'slim-large' => 'Slim Large (160x500)', - 'skyscraper' => 'Skyscraper (160x600)', - 'slim-xlarge' => 'Slim XLarge (160x700)', - 'wide-skyscraper' => 'Wide Skyscraper (160x800)', - 'half-page' => 'Half Page (300x600)', - 'large-skyscraper' => 'Large Skyscraper (300x1050)' + // 130px width + 'w130-h300' => '130x300', + 'w130-h400' => '130x400', + 'w130-h500' => '130x500', + 'w130-h600' => '130x600', + // 140px width + 'w140-h300' => '140x300', + 'w140-h400' => '140x400', + 'w140-h500' => '140x500', + 'w140-h600' => '140x600', + // 150px width + 'w150-h300' => '150x300', + 'w150-h400' => '150x400', + 'w150-h500' => '150x500', + 'w150-h600' => '150x600', + // 160px width + 'slim-small' => '160x300', + 'slim-medium' => '160x400', + 'slim-large' => '160x500', + 'skyscraper' => '160x600 (Skyscraper)', + 'slim-xlarge' => '160x700', + 'wide-skyscraper' => '160x800', + // 300px width + 'w300-h250' => '300x250 (Medium Rectangle)', + 'half-page' => '300x600 (Half Page)', + 'large-skyscraper' => '300x1050 (Large Skyscraper)', + // 400px width + 'w400-h300' => '400x300', + 'w400-h400' => '400x400', + 'w400-h600' => '400x600', + // 500px width + 'w500-h300' => '500x300', + 'w500-h400' => '500x400', + 'w500-h600' => '500x600', + // 600px width + 'w600-h300' => '600x300', + 'w600-h400' => '600x400', + 'w600-h600' => '600x600' ] ); diff --git a/Public/AdsensePlacement/Infrastructure/Ui/AdsensePlacementRenderer.php b/Public/AdsensePlacement/Infrastructure/Ui/AdsensePlacementRenderer.php index fc55ab51..4720e7fa 100644 --- a/Public/AdsensePlacement/Infrastructure/Ui/AdsensePlacementRenderer.php +++ b/Public/AdsensePlacement/Infrastructure/Ui/AdsensePlacementRenderer.php @@ -295,16 +295,47 @@ final class AdsensePlacementRenderer $delayEnabled = ($settings['forms']['delay_enabled'] ?? true) === true; // Dimensiones segun formato - // Opciones de 160px de ancho con diferentes alturas + opciones anchas + // Soporta anchos: 130, 140, 150, 160, 300, 400, 500, 600px [$width, $height] = match($format) { + // 130px width + 'w130-h300' => [130, 300], + 'w130-h400' => [130, 400], + 'w130-h500' => [130, 500], + 'w130-h600' => [130, 600], + // 140px width + 'w140-h300' => [140, 300], + 'w140-h400' => [140, 400], + 'w140-h500' => [140, 500], + 'w140-h600' => [140, 600], + // 150px width + 'w150-h300' => [150, 300], + 'w150-h400' => [150, 400], + 'w150-h500' => [150, 500], + 'w150-h600' => [150, 600], + // 160px width (legacy keys) 'slim-small' => [160, 300], 'slim-medium' => [160, 400], 'slim-large' => [160, 500], 'slim-xlarge' => [160, 700], 'wide-skyscraper' => [160, 800], + // 300px width + 'w300-h250' => [300, 250], 'half-page' => [300, 600], 'large-skyscraper' => [300, 1050], - default => [160, 600], // skyscraper + // 400px width + 'w400-h300' => [400, 300], + 'w400-h400' => [400, 400], + 'w400-h600' => [400, 600], + // 500px width + 'w500-h300' => [500, 300], + 'w500-h400' => [500, 400], + 'w500-h600' => [500, 600], + // 600px width + 'w600-h300' => [600, 300], + 'w600-h400' => [600, 400], + 'w600-h600' => [600, 600], + // Default: skyscraper 160x600 + default => [160, 600], }; $scriptType = $delayEnabled ? 'text/plain' : 'text/javascript'; diff --git a/Schemas/adsense-placement.json b/Schemas/adsense-placement.json index c02e7ed8..064ecf90 100644 --- a/Schemas/adsense-placement.json +++ b/Schemas/adsense-placement.json @@ -226,14 +226,36 @@ "default": "skyscraper", "editable": true, "options": { - "slim-small": "Slim Small (160x300)", - "slim-medium": "Slim Medium (160x400)", - "slim-large": "Slim Large (160x500)", - "skyscraper": "Skyscraper (160x600)", - "slim-xlarge": "Slim XLarge (160x700)", - "wide-skyscraper": "Wide Skyscraper (160x800)", - "half-page": "Half Page (300x600)", - "large-skyscraper": "Large Skyscraper (300x1050)" + "w130-h300": "130x300", + "w130-h400": "130x400", + "w130-h500": "130x500", + "w130-h600": "130x600", + "w140-h300": "140x300", + "w140-h400": "140x400", + "w140-h500": "140x500", + "w140-h600": "140x600", + "w150-h300": "150x300", + "w150-h400": "150x400", + "w150-h500": "150x500", + "w150-h600": "150x600", + "slim-small": "160x300", + "slim-medium": "160x400", + "slim-large": "160x500", + "skyscraper": "160x600 (Skyscraper)", + "slim-xlarge": "160x700", + "wide-skyscraper": "160x800", + "w300-h250": "300x250 (Medium Rectangle)", + "half-page": "300x600 (Half Page)", + "large-skyscraper": "300x1050 (Large Skyscraper)", + "w400-h300": "400x300", + "w400-h400": "400x400", + "w400-h600": "400x600", + "w500-h300": "500x300", + "w500-h400": "500x400", + "w500-h600": "500x600", + "w600-h300": "600x300", + "w600-h400": "600x400", + "w600-h600": "600x600" }, "description": "Tamano del anuncio en los rails laterales" },