<?xml version="1.0"?>
<rss version="2.0"><channel><title>M&#xF3;dulos y plantillas gratuitas Latest Topics</title><link>https://forum.prestashop.com/forum/168-m%C3%B3dulos-y-plantillas-gratuitas/</link><description>M&#xF3;dulos y plantillas gratuitas Latest Topics</description><language>en</language><item><title>Que modulo de captcha gratis deberia usar?</title><link>https://forum.prestashop.com/topic/1108187-que-modulo-de-captcha-gratis-deberia-usar/</link><description><![CDATA[<p>
	quiero incorporar un modulo gratis de captcha a mi pagina pero no se cual opcion usar<br />
	hasta ahora se de 3<br />
	el recaptcha de la pagina prestahero (pero lei en un foro por aqui que no era tan bueno)<br />
	el cloudflare turnstile <a href="https://github.com/Pixel-Open/prestashop-cloudflare-turnstile" rel="external nofollow">https://github.com/Pixel-Open/prestashop-cloudflare-turnstile</a><br />
	y el EIcaptcha (que tambien lei en este foro que no era tan bueno)<br />
	cual modulo usan?<br />
	y que tal ha sido su experiencia?
</p>
]]></description><guid isPermaLink="false">1108187</guid><pubDate>Mon, 08 Jun 2026 16:32:43 +0000</pubDate></item><item><title>Donde encuentro un modulo para bundles dinamicos gratis? prestashop 9.1</title><link>https://forum.prestashop.com/topic/1107654-donde-encuentro-un-modulo-para-bundles-dinamicos-gratis-prestashop-91/</link><description><![CDATA[<p>
	En realidad igual busco donde encontrar modulos gratis y confiables<br />
	pero ahora necesito mas especificamente un modulo que me permita hacer bundles con los productos como por ejemplo comprar un desatornillador y que pueda agregar 10 tornillos o ninguno y se modifique el precio acorde
</p>
]]></description><guid isPermaLink="false">1107654</guid><pubDate>Fri, 15 May 2026 17:54:34 +0000</pubDate></item><item><title>[MODULE]  RSI Malware/virus Scanner  - PS1.6 / 9</title><link>https://forum.prestashop.com/topic/1107576-module-rsi-malwarevirus-scanner-ps16-9/</link><description><![CDATA[<p>
	<img alt="rsi-malware-scanner.jpg" class="ipsImage" data-ratio="75.08" height="750" style="height:auto;" width="750" data-src="https://catalogo-onlinersi.net/2601-thickbox_default/rsi-malware-scanner.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" />
</p>

<p>
	RSI Scanner es un módulo de seguridad para PrestaShop diseñado para detectar archivos sospechosos, infectados o maliciosos dentro de la tienda, con especial foco en malware oculto habitualmente dentro de carpetas de imágenes como /img.
</p>

<p>
	El módulo escanea el sistema de archivos y la base de datos en busca de patrones conocidos de malware, falsas imágenes, backdoors PHP ocultos, skimmers de checkout, inyecciones JavaScript sospechosas y código malicioso almacenado en la base de datos.
</p>

<p>
	Es especialmente útil para detectar ataques donde los archivos maliciosos se suben con nombres aleatorios y extensiones falsas, como .png, .webp, .jpg o .gif, aunque en realidad contienen PHP, JavaScript, payloads en Base64 o código destinado a manipular el checkout.
</p>

<p>
	Funcionalidades principales
</p>

<p>
	RSI Scanner realiza escaneos mediante AJAX directamente desde el back office de PrestaShop, permitiendo revisar tiendas grandes de forma progresiva sin sobrecargar el servidor.
</p>

<p>
	El módulo puede detectar:
</p>

<p>
	Falsas imágenes que contienen código PHP o JavaScript.
</p>

<p>
	Backdoors PHP ocultos dentro de /img u otras carpetas públicas.
</p>

<p>
	Loaders PHP mínimos que incluyen archivos .webp, .png u otros falsos archivos multimedia maliciosos.
</p>

<p>
	Malware ofuscado que utiliza base64_decode, eval, create_function o técnicas similares.
</p>

<p>
	Skimmers de checkout que inyectan formularios de pago falsos.
</p>

<p>
	Scripts sospechosos cargados desde /img.
</p>

<p>
	Indicadores conocidos de malware, como inyecciones de formularios de pago maliciosos, falsos formularios de PayPal/tarjeta y capturadores de datos de pago.
</p>

<p>
	Registros sospechosos en la base de datos dentro de configuraciones, CMS, temas o campos de módulos.
</p>

<p>
	Referencias a archivos infectados almacenadas en la base de datos.
</p>

<p>
	Escáner del sistema de archivos
</p>

<p>
	El escáner de archivos revisa recursivamente la instalación de PrestaShop e informa archivos sospechosos con información relevante, incluyendo:
</p>

<p>
	Ruta del archivo.
</p>

<p>
	Nivel de riesgo.
</p>

<p>
	Motivo de la detección.
</p>

<p>
	Tamaño del archivo.
</p>

<p>
	Fecha de última modificación.
</p>

<p>
	Hash SHA256.
</p>

<p>
	Fragmento de código sospechoso, cuando está disponible.
</p>

<p>
	El escáner está diseñado para identificar malware incluso cuando los nombres de los archivos son aleatorios. Esto significa que no depende únicamente de nombres conocidos, sino que analiza el contenido de los archivos, sus extensiones y comportamientos sospechosos.
</p>

<p>
	Escáner de base de datos
</p>

<p>
	RSI Scanner también busca en la base de datos código inyectado o referencias a archivos infectados.
</p>

<p>
	Puede detectar contenido sospechoso almacenado en:
</p>

<p>
	Valores de configuración de PrestaShop.
</p>

<p>
	Páginas CMS.
</p>

<p>
	Bloques HTML de temas o módulos.
</p>

<p>
	Campos de contenido personalizados.
</p>

<p>
	Cualquier campo de texto escaneado que pueda contener scripts o payloads inyectados.
</p>

<p>
	Esto ayuda a identificar si la infección se está cargando desde una plantilla, una configuración de módulo, una página CMS u otra fuente almacenada en la base de datos.
</p>

<p>
	Herramientas de limpieza
</p>

<p>
	Desde el panel del módulo, los administradores pueden actuar sobre archivos sospechosos:
</p>

<p>
	Mover archivos a cuarentena.
</p>

<p>
	Eliminar archivos infectados.
</p>

<p>
	Revisar los detalles de los archivos detectados antes de tomar una acción.
</p>

<p>
	Crear o actualizar un archivo .htaccess de protección dentro de /img.
</p>

<p>
	La opción de cuarentena es recomendable antes de eliminar archivos, ya que permite al propietario de la tienda o al desarrollador revisar el archivo antes de borrarlo definitivamente.
</p>

<p>
	Protección de la carpeta /img
</p>

<p>
	El módulo incluye una opción para crear un archivo .htaccess de protección dentro del directorio /img.
</p>

<p>
	Esta protección ayuda a bloquear la ejecución de archivos PHP dentro de la carpeta de imágenes, reduciendo el riesgo de que los atacantes ejecuten webshells o backdoors subidos como falsas imágenes.
</p>

<p>
	Si ya existe un archivo .htaccess, el módulo crea una copia de seguridad antes de modificarlo.
</p>

<p>
	Protección AJAX y de sesión
</p>

<p>
	RSI Scanner utiliza procesamiento AJAX por lotes para evitar peticiones largas y timeouts del servidor.
</p>

<p>
	También incluye un sistema de keep-alive para ayudar a evitar que la sesión del back office de PrestaShop expire mientras se ejecuta un escaneo. Si la sesión expira igualmente, el módulo detecta la respuesta HTML inválida y muestra un mensaje claro en lugar de romper el escaneo con una salida ilegible.
</p>

<p>
	Soporte multilingüe
</p>

<p>
	El módulo está desarrollado en inglés por defecto e incluye archivos de traducción para:
</p>

<p>
	Inglés
</p>

<p>
	Francés
</p>

<p>
	Español
</p>

<p>
	Las principales etiquetas del back office, botones, mensajes de escaneo, alertas, confirmaciones y mensajes JavaScript son traducibles.
</p>

<p>
	Casos de uso habituales
</p>

<p>
	RSI Scanner es útil cuando:
</p>

<p>
	Aparece un método de pago falso en el checkout.
</p>

<p>
	La tienda ha sido infectada con un skimmer de checkout.
</p>

<p>
	Se encuentran archivos sospechosos dentro de /img.
</p>

<p>
	Aparecen inesperadamente archivos aleatorios .php, .webp, .png o .jpg.
</p>

<p>
	La tienda se reinfecta después de eliminar archivos maliciosos.
</p>

<p>
	Necesitas localizar desde dónde se está cargando un script malicioso.
</p>

<p>
	Quieres detectar inyecciones JavaScript almacenadas en la base de datos.
</p>

<p>
	Quieres reforzar la carpeta /img contra la ejecución de PHP.
</p>

<p>
	Nota importante
</p>

<p>
	RSI Scanner ayuda a detectar y eliminar archivos infectados, pero no reemplaza una auditoría de seguridad completa. Después de encontrar malware, se recomienda revisar también los logs de acceso del servidor, las cuentas de administrador, los usuarios FTP/SFTP, el acceso al panel de hosting, los módulos instalados y los archivos modificados recientemente. También se deberían rotar las contraseñas y claves API después de una infección confirmada.<br />
	<br />
	URL:<br />
	<a href="https://catalogo-onlinersi.net/es/back-office/525-copy-of-rsi-module-generator.html" rel="external nofollow">https://catalogo-onlinersi.net/es/back-office/525-copy-of-rsi-module-generator.html</a><br />
	<br />
	Descarga:<br />
	<a class="ipsAttachLink" data-fileid="343192" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=343192&amp;key=452810b906f666e6b7a2d08e759009d6" data-fileext="zip" rel="">rsiscanner.zip</a>
</p>
]]></description><guid isPermaLink="false">1107576</guid><pubDate>Wed, 13 May 2026 01:14:01 +0000</pubDate></item><item><title>Incorporacion de WebPay</title><link>https://forum.prestashop.com/topic/1107224-incorporacion-de-webpay/</link><description><![CDATA[<p>
	Hola<br />
	estoy usando prestashop9.1 y me gustaria saber como puedo incorporar WebPay para mis compras ya que no encontre el modulo
</p>
]]></description><guid isPermaLink="false">1107224</guid><pubDate>Tue, 28 Apr 2026 14:44:12 +0000</pubDate></item><item><title>Tego problemas con el plugin de paypal no toma pagar por tarjeta</title><link>https://forum.prestashop.com/topic/1104175-tego-problemas-con-el-plugin-de-paypal-no-toma-pagar-por-tarjeta/</link><description><![CDATA[<p>
	Tego problemas con el plugin de paypal no toma pagar por tarjeta que debo hacer?
</p>
]]></description><guid isPermaLink="false">1104175</guid><pubDate>Wed, 17 Dec 2025 03:13:42 +0000</pubDate></item><item><title>[M&#xF3;dulo gratuito] CF Football Bypass: M&#xF3;dulo para gestionar Cloudflare autom&#xE1;ticamente en PrestaShop</title><link>https://forum.prestashop.com/topic/1102512-m%C3%B3dulo-gratuito-cf-football-bypass-m%C3%B3dulo-para-gestionar-cloudflare-autom%C3%A1ticamente-en-prestashop/</link><description><![CDATA[<p>
	<span class="ipsEmoji">⚽</span> CF Football Bypass para PrestaShop
</p>

<p>
	Módulo de PrestaShop que automatiza el cambio entre los modos **Proxied** y **DNS Only** en Cloudflare cuando se aplican bloqueos masivos durante partidos de fútbol.  
</p>

<p>
	El módulo obtiene el feed de [hayahora.futbol](https://hayahora.futbol/) y activa/desactiva los registros DNS seleccionados para mantener accesible tu tienda legítima, con un periodo de enfriamiento configurable antes de reactivar Cloudflare.  
</p>

<p>
	---
</p>

<p>
	 <span class="ipsEmoji">?</span> Instalación rápida
</p>

<p>
	1. Descarga el archivo ZIP desde <a href="https://github.com/JoseManuelPedraja/cf-football-bypass-prestashop/releases" rel="external nofollow">https://github.com/JoseManuelPedraja/cf-football-bypass-prestashop/releases</a><br />
	2. Copia la carpeta `cffootballbypass` en el directorio de módulos de tu PrestaShop:  <br />
	3. Desde el **Back Office** de PrestaShop, ve a **Módulos &gt; Gestor de módulos** y activa **CF Football Bypass**.  <br />
	4. Configura el módulo en **Parámetros Avanzados &gt; CF Football Bypass**, donde podrás ajustar:  <br />
	- El intervalo de comprobación  <br />
	- El periodo de enfriamiento tras desactivar Cloudflare  <br />
	- Los registros DNS que quieres gestionar  
</p>

<p>
	---
</p>

<p>
	<span class="ipsEmoji">⚙️</span> Requisitos
</p>

<p>
	- PrestaShop 8 o superior  <br />
	- Cuenta activa en Cloudflare  <br />
	- Acceso a API de Cloudflare con permisos para gestionar DNS  
</p>

<p>
	GitHub del poryecto  
</p>

<p>
	<a href="https://github.com/JoseManuelPedraja/cf-football-bypass-prestashop" rel="external nofollow">https://github.com/JoseManuelPedraja/cf-football-bypass-prestashop</a>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="339085" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=339085&amp;key=533cd05c9f865500913f08f04cb55018" rel="">cffootballbypass.zip</a>
</p>
]]></description><guid isPermaLink="false">1102512</guid><pubDate>Wed, 08 Oct 2025 08:14:43 +0000</pubDate></item><item><title>? [M&#xD3;DULO GRATUITO] PromoBar &#x2013; Barra de anuncios configurable, multiling&#xFC;e y ligera</title><link>https://forum.prestashop.com/topic/1102841-%3F-m%C3%B3dulo-gratuito-promobar-%E2%80%93-barra-de-anuncios-configurable-multiling%C3%BCe-y-ligera/</link><description><![CDATA[<p>
	¡Hola comunidad! <span class="ipsEmoji">?</span>
</p>

<p>
	Comparto aquí un pequeño módulo que he desarrollado para PrestaShop:<br /><span class="ipsEmoji">?</span> <strong>PromoBar</strong>, una barra de anuncios totalmente personalizable para mostrar mensajes, promociones o información importante en la parte superior de tu tienda.
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Características principales</strong>
</p>

<p>
	<span class="ipsEmoji">✅</span> Mensaje multilingüe con mini-formateo (negrita, enlace)<br /><span class="ipsEmoji">✅</span> Fechas de visualización configurables (inicio y fin)<br /><span class="ipsEmoji">✅</span> Cuenta atrás automática si se define una fecha de finalización<br /><span class="ipsEmoji">✅</span> Botón de acción personalizable (texto, URL y colores)<br /><span class="ipsEmoji">✅</span> Animaciones ligeras (desplazamiento, pulso, parpadeo o ninguna)<br /><span class="ipsEmoji">✅</span> Botón “Cerrar” con duración de cookie (de 1 a 365 días)<br /><span class="ipsEmoji">✅</span> Personalización completa: color de texto, fondo y tipografía local<br /><span class="ipsEmoji">✅</span> Respeta las preferencias de accesibilidad (movimiento reducido)<br /><span class="ipsEmoji">✅</span> Compatible con multitienda y Creative Elements (Elementor para PrestaShop)<br /><span class="ipsEmoji">✅</span> Probado en PrestaShop 1.7 → 9.x y PHP 7.4 → 8.4
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Objetivo del módulo</strong>
</p>

<p>
	<strong>PromoBar </strong>está pensado para los comerciantes que buscan una barra <strong>simple, limpia y eficaz</strong>, sin dependencias externas.<br />
	La idea es <strong>informar sin molestar</strong>, y poder gestionarlo todo desde el back office en unos pocos clics.
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Enlaces útiles</strong>
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Descarga gratuita:</strong> <a href="https://bedom.fr/boutique/extensions-plugins/promobar" rel="external nofollow">https://bedom.fr/boutique/extensions-plugins/promobar</a><br /><strong><span class="ipsEmoji">?</span> Demo en línea:</strong> <a href="https://www.bedom.fr/demo/" rel="external nofollow">https://www.bedom.fr/demo/</a><br /><strong><span class="ipsEmoji">?</span> Autor:</strong> BeDOM – Soluciones Web
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Compatibilidad</strong>
</p>

<ul><li>
		PrestaShop 1.7.x → 9.x
	</li>
	<li>
		Creative Elements (Elementor para PrestaShop)
	</li>
	<li>
		PHP 7.4 → 8.4
	</li>
	<li>
		Temas modernos (estructura nativa, no intrusiva)
	</li>
</ul><p>
	<strong><span class="ipsEmoji">⚖️</span> Licencia</strong>
</p>

<p>
	PromoBar se distribuye bajo la licencia MIT.<br />
	Eres libre de usarlo, modificarlo y adaptarlo según tus necesidades, siempre que se mantenga la mención del autor original (BeDOM – Soluciones Web).
</p>

<p>
	<span class="ipsEmoji">?</span> Detalles de la licencia disponibles en el repositorio de GitHub:<br /><span class="ipsEmoji">?</span> <a href="https://github.com/bdomat/promobar" rel="external nofollow">https://github.com/bdomat/promobar</a>
</p>

<p>
	<strong><span class="ipsEmoji">?</span> Tus comentarios cuentan</strong>
</p>

<p>
	Esta es la primera versión (v1.0.0).<br />
	No dudes en dejar tus sugerencias, comentarios o ideas de mejora — tengo previsto hacerlo evolucionar según las necesidades de la comunidad.
</p>

<p>
	<strong><span class="ipsEmoji">?‍?</span> Autor: </strong>BeDOM – Soluciones Web<br /><span class="ipsEmoji">?</span> Desarrollo web, PrestaShop &amp; WordPress<br /><span class="ipsEmoji">?</span> <a href="https://bedom.fr" rel="external nofollow">https://bedom.fr</a>
</p>

<p>
	<span class="ipsEmoji">?</span> Si te resulta útil, un pequeño “gracias” o comentario siempre se agradece <span class="ipsEmoji">?</span>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="339372" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=339372&amp;key=d6c3687b3596f3a0d397cd76b60fce94" rel="">promobar.zip</a>
</p>
]]></description><guid isPermaLink="false">1102841</guid><pubDate>Tue, 21 Oct 2025 13:01:02 +0000</pubDate></item><item><title>Olisearch - M&#xF3;dulo gratis de buscador avanzado tipo DooFinder</title><link>https://forum.prestashop.com/topic/1103115-olisearch-m%C3%B3dulo-gratis-de-buscador-avanzado-tipo-doofinder/</link><description><![CDATA[<p>
	Acabamos de lanzar en OleaIT un buscador inteligente para PrestaShop y WooCommerce que está funcionando muy bien.
</p>

<p>
	<span class="ipsEmoji">?</span> Olisearch<br />
	Es rápido, relevante, se integra en 1 hora…<br />
	Y lo mejor: es gratuito hasta 1.000 búsquedas al mes. Sin permanencias ni líos.<br />
	Tras las 1.000 búsquedas se desactiva o puedes pasar al plan básico por 25€ que ofrece 10.000 búsquedas.
</p>

<p>
	Solo necesitas instalar el módulo, y nosotros nos encargamos del resto.<br />
	Además, tendrás acceso a estadísticas y soporte prioritario.
</p>

<p>
	? Web: https://olisearch.com/
</p>

<p>
	<span class="ipsEmoji">?</span> Vídeo (1 min): https://www.youtube.com/watch?v=CZ7NH7q6kSM
</p>

<p>
	Interesados por privado <span class="ipsEmoji">?</span>
</p>
]]></description><guid isPermaLink="false">1103115</guid><pubDate>Sun, 02 Nov 2025 08:47:51 +0000</pubDate></item><item><title><![CDATA[[MÓDULO GRATUITO] #LiveFilter 5 FREE -> Filtro de producto gratuito (ajax filtering)]]></title><link>https://forum.prestashop.com/topic/1083302-m%C3%B3dulo-gratuito-livefilter-5-free-filtro-de-producto-gratuito-ajax-filtering/</link><description><![CDATA[<p>
	<strong>#Prestashop  LiveFilter </strong>v5 FREE para ofrece a su sitio web de comercio electrónico Prestashop una forma innovadora de filtrar productos.
</p>

<p>
	<strong>CARACTERÍSTICAS:</strong>
</p>

<ul><li>
		<strong>Plug &amp; Play </strong>- configuración automática basada en los productos y la configuración de su tienda
	</li>
	<li>
		<strong>Clasificación “natural”</strong> - las opciones de filtro se clasifican “naturalmente”, como si los humanos leyeran listas
	</li>
	<li>
		<strong>Filtrado instantáneo</strong> - los productos se filtran a la velocidad del rayo, lo que da la impresión de obtener resultados instantáneos
	</li>
	<li>
		*Funciones avanzadas adicionales están disponibles en la versión PRO, más información aquí (ingles) - <strong><a href="https://forum.prestashop.com/topic/1085432-addon-livefilter-v5-pro-add-instant-filtering-and-view-data-about-what-your-visitors-are-using-most/" rel="">[addon] #LiveFilter v5 PRO</a> </strong>
	</li>
</ul><p>
	<strong><span class="ipsEmoji">?</span>DESCARGAS: <a href="https://prestashop.endpulse.com/download.php?free_module=LiveFilter_v5.3.1_free" rel="external nofollow">LiveFilter_v5.3.1_free</a></strong>
</p>

<p>
	<strong><span class="ipsEmoji">▶️</span>DEMO (versión PRO)</strong>: <a href="https://demo.endpulse.com/6-accessories" rel="external nofollow">demo.endpulse.com</a>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="317417" href="//media.invisioncic.com/t336404/monthly_2023_12/Screenshot2023-12-06184039.png.e8660d5c54a0d06252fbbdab6dcad104.png" rel=""><img alt="Screenshot 2023-12-06 184039.png" class="ipsImage ipsImage_thumbnailed" data-fileid="317417" data-ratio="48.1" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2023_12/Screenshot2023-12-06184039.thumb.png.8e913e13155d62aca2627552358a2e5f.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	 
</p>

<p>
	<em><strong>Vista previa de la versión PRO:</strong></em>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="327597" href="//media.invisioncic.com/t336404/monthly_2024_09/livefilter_diableoptions_demo.gif.8323fd37a3305cd893686f6e7e68ed74.gif" rel=""><img alt="livefilter_diableoptions_demo.thumb.gif.f6c7e046b8723ed482370dc7002043ea.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="327597" data-ratio="75.08" style="height:auto;" width="999" data-src="//media.invisioncic.com/t336404/monthly_2024_09/livefilter_diableoptions_demo.thumb.gif.f6c7e046b8723ed482370dc7002043ea.gif" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>
]]></description><guid isPermaLink="false">1083302</guid><pubDate>Tue, 02 Jan 2024 14:55:24 +0000</pubDate></item><item><title><![CDATA[​#[MÓDULO GRATUITO] WhatsappConnect -> Aumente las ventas con el botón flotante personalizable de WhatsApp]]></title><link>https://forum.prestashop.com/topic/1090120-%E2%80%8Bm%C3%B3dulo-gratuito-whatsappconnect-aumente-las-ventas-con-el-bot%C3%B3n-flotante-personalizable-de-whatsapp/</link><description><![CDATA[<p>
	<strong>#WhatsappConnect -</strong> muestra un botón flotante personalizable para mensajes de WhatsApp, tanto para la versión de escritorio como para el sitio web móvil
</p>

<p>
	<strong><span class="ipsEmoji">❓</span>CARACTERÍSTICAS:</strong>
</p>

<ul><li>
		Muestra el botón para mensajes de WhatsApp
	</li>
	<li>
		Varios estilos de botones para elegir
	</li>
	<li>
		Personalización lateral flotante
	</li>
	<li>
		Texto adicional sobre el botón
	</li>
</ul><p>
	<strong><strong><span class="ipsEmoji">?</span></strong>DESCARGA: <a href="https://prestashop.endpulse.com/download.php?free_module=WhatsappConnect_v1.6.5_free" rel="external nofollow">WhatsappConnect_v1.6.5</a></strong>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="326535" href="//media.invisioncic.com/t336404/monthly_2024_08/settings_screen2.png.f1c6d28647aa2d6ccbed190287d9892f.png.1c4f4129d52c3a785103d7d93265e974.png" rel=""><img alt="settings_screen2.png.f1c6d28647aa2d6ccbed190287d9892f.thumb.png.1072d56a220f268dea99d3598a168f6e.png" class="ipsImage ipsImage_thumbnailed" data-fileid="326535" data-ratio="33.40" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2024_08/settings_screen2.png.f1c6d28647aa2d6ccbed190287d9892f.thumb.png.1072d56a220f268dea99d3598a168f6e.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a><a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="326534" href="//media.invisioncic.com/t336404/monthly_2024_08/front_screen1.png.242918b6742be4f5adfe8ebeb4ca4483.png.46ca49a538685fbfa67350c00dceda00.png" rel=""><img alt="front_screen1.png.242918b6742be4f5adfe8ebeb4ca4483.thumb.png.1ed94d3055bed6190039d561daf70b31.png" class="ipsImage ipsImage_thumbnailed" data-fileid="326534" data-ratio="50.60" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2024_08/front_screen1.png.242918b6742be4f5adfe8ebeb4ca4483.thumb.png.1ed94d3055bed6190039d561daf70b31.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>
]]></description><guid isPermaLink="false">1090120</guid><pubDate>Fri, 30 Aug 2024 13:06:44 +0000</pubDate></item><item><title>ReCAPTCHA PrestaHero</title><link>https://forum.prestashop.com/topic/1093458-recaptcha-prestahero/</link><description><![CDATA[<p>
	Buenos dias a todos.
</p>

<p>
	He instalado el modulo gratuito de ReCAPTCHA de PrestaHero, pero no me funciona.
</p>

<p>
	Esta implementado y aparece en la Web pero la gente puede seguir mandando mensajes sin poner el Captcha.
</p>

<p>
	Alguien le ha pasado, me esta acribillando a SPAM desde el formulario de contacto.<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2024_12/2024-12-17_113011.jpg.5f6d37cc886712f9ae5e9e0d8ff8b8fc.jpg" data-fileid="330274" data-fileext="jpg" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="330274" data-ratio="15.40" width="1000" alt="2024-12-17_113011.thumb.jpg.e4f8eb33256125cb113f27d26e6eb2a3.jpg" data-src="//media.invisioncic.com/t336404/monthly_2024_12/2024-12-17_113011.thumb.jpg.e4f8eb33256125cb113f27d26e6eb2a3.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a><a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2024_12/2024-12-17_113731.jpg.d34d2e9a1935b631eb58d50a00b64709.jpg" data-fileid="330275" data-fileext="jpg" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="330275" data-ratio="35.20" width="1000" alt="2024-12-17_113731.thumb.jpg.bda6ef7dfb836aeb43edb70308d64b0f.jpg" data-src="//media.invisioncic.com/t336404/monthly_2024_12/2024-12-17_113731.thumb.jpg.bda6ef7dfb836aeb43edb70308d64b0f.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	Un saludo y gracias.
</p>
]]></description><guid isPermaLink="false">1093458</guid><pubDate>Tue, 17 Dec 2024 11:43:07 +0000</pubDate></item><item><title>PrestaShop Checkout v6.3.6.3 error al conectar</title><link>https://forum.prestashop.com/topic/1100246-prestashop-checkout-v6363-error-al-conectar/</link><description><![CDATA[<p>
	He actualizado la versión de PrestaShop Checkout v6.3.6.3 y despues de actualizar y conectar la tienda con la cuenta prestashop me parece el siguiente error cuando intento configurar el modulo:
</p>

<p>
	<em>La conexión de la cuenta ha fallado. Inténtalo de nuevo o contacta con el equipo de Soporte.</em>
</p>

<p>
	Alguien se ha encontrado con el mismo problema y sabe como solucionarlo?
</p>

<p>
	Gracias de antemano <span><img alt=":)" data-emoticon="" height="20" src="https://media.invisioncic.com/t336404/emoticons/default_smile.png" srcset="https://media.invisioncic.com/t336404/emoticons/smile@2x.png 2x" title=":)" width="20" /></span>
</p>
]]></description><guid isPermaLink="false">1100246</guid><pubDate>Thu, 17 Jul 2025 09:21:22 +0000</pubDate></item><item><title>[MODULO GRATIS] Delete orders v5.0 - PS 1.3/1.7/8/9 (borrar pedidos)</title><link>https://forum.prestashop.com/topic/1100996-modulo-gratis-delete-orders-v50-ps-131789-borrar-pedidos/</link><description><![CDATA[<p>
	Habilite la opción para eliminar pedidos en la página de administración (ideal para eliminar pedidos de prueba)
</p>

<p>
	Use este módulo para habilitar o deshabilitar esta función de manera fácil para sus clientes.
</p>

<p>
	También puede eliminar todas las órdenes en un clic de la configuración del módulo
</p>

<p>
	En PS 1.7.x debe ingresar a la página de pedido para ver el botón de eliminar
</p>

<p>
	 
</p>

<p>
	<strong>Caracteristicas </strong>:
</p>

<p>
	Multi idioma
</p>

<p>
	Cross browser
</p>

<p>
	<img alt="eliminar-pedidos.jpg" class="ipsImage" data-ratio="75.08" height="750" style="height:auto;" width="750" data-src="https://catalogo-onlinersi.net/2418-thickbox_default/eliminar-pedidos.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	 
</p>

<p>
	Link
</p>

<p>
	<a href="https://catalogo-onlinersi.net/es/modulos-prestashop/160-eliminar-pedidos.html" rel="external nofollow">https://catalogo-onlinersi.net/es/modulos-prestashop/160-eliminar-pedidos.html</a>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileid="337808" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=337808&amp;key=070d3c12b0439a8b06057f0bc48c1693" data-fileext="zip" rel="">deleteorders.zip</a> v5.0
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1100996</guid><pubDate>Tue, 12 Aug 2025 20:13:04 +0000</pubDate></item><item><title>[MODULO] RSI Module  Generator - PS 1.7/8</title><link>https://forum.prestashop.com/topic/1100352-modulo-rsi-module-generator-ps-178/</link><description><![CDATA[<p>
	Genere modulos de prestashop en un par de clics, con cientos de opciones!
</p>

<p>
	El Generador de Módulos RSI es un módulo de PrestaShop que permite crear módulos personalizados con múltiples opciones, listos para modificar y usar. A diferencia del generador oficial, este incluye un conjunto más amplio de campos configurables y opciones reutilizables para agilizar el desarrollo de nuevos módulos.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2025_07/previewnew.jpg.eb523cfa2a90cc934f6ceff22b0e130b.jpg" data-fileid="337185" data-fileext="jpg" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="337185" data-ratio="100.00" width="750" alt="previewnew.thumb.jpg.68db173faa28e45fdbcb2d26109436bf.jpg" data-src="//media.invisioncic.com/t336404/monthly_2025_07/previewnew.thumb.jpg.68db173faa28e45fdbcb2d26109436bf.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	<span class="ipsEmoji">✨</span> Características
</p>

<p>
	Configuración inicial de:
</p>

<p>
	Nombre del módulo
</p>

<p>
	Prefijo
</p>

<p>
	Versión
</p>

<p>
	Autor
</p>

<p>
	Logotipo
</p>

<p>
	Selección de ganchos disponibles
</p>

<p>
	Generación automática de archivos:
</p>

<p>
	CSS y JS para el frontend
</p>

<p>
	CSS y JS para el backend
</p>

<p>
	Creación de campos personalizados:
</p>

<p>
	Campos de texto (simples y multilingües)
</p>

<p>
	Imagen
</p>

<p>
	Selección (listas desplegables)
</p>

<p>
	Booleano (sí/no)
</p>

<p>
	Casillas de verificación
</p>

<p>
	Lista de países
</p>

<p>
	Monedas
</p>

<p>
	Empresas de envío
</p>

<p>
	Fechas
</p>

<p>
	Selector de color
</p>

<p>
	Otros tipos personalizables
</p>

<p>
	Inclusión de:
</p>

<p>
	Licencia
</p>

<p>
	Derechos de autor
</p>

<p>
	Descarga el módulo generado en formato .zip, listo para instalar
</p>

<p>
	<span class="ipsEmoji">?</span> Instalación
</p>

<p>
	Sube el módulo como cualquier otro módulo de PrestaShop.
</p>

<p>
	Instálalo desde el panel de administración.
</p>

<p>
	Accede al generador desde la configuración del módulo.
</p>

<p>
	? Requisitos
</p>

<p>
	PrestaShop 1.7.x u 8.x
</p>

<p>
	PHP 7.2+ / 8.x
</p>

<p>
	Extensiones estándar habilitadas (curl, zip, json, etc.)
</p>

<p>
	<span class="ipsEmoji">?</span> Licencia
</p>

<p>
	Este proyecto se distribuye bajo la licencia MIT. Consulte el archivo de LICENCIA para más detalles.
</p>

<p>
	<span class="ipsEmoji">?‍?</span> Autor
</p>

<p>
	Desarrollado por el equipo de RSI para desarrolladores de PrestaShop que desean automatizar y acelerar la creación de módulos reutilizables.
</p>

<p>
	<span class="ipsEmoji">?</span> Contacto
</p>

<p>
	Si tiene alguna sugerencia o encuentra algún error, no dude en contactarnos. www.catalogo-onlinersi.net
</p>

<p>
	<a href="https://catalogo-onlinersi.net/en/back-office-prestashop-modules/520-rsi-module-generator.html" rel="external nofollow">https://catalogo-onlinersi.net/en/back-office-prestashop-modules/520-rsi-module-generator.html</a>
</p>

<p>
	 
</p>

<p>
	Puede colabrar en github:
</p>

<p>
	<a href="https://github.com/shacker2/rsi_generator/" rel="external nofollow">https://github.com/shacker2/rsi_generator/</a>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileid="337187" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=337187&amp;key=d8c8e3a197dc08a8cf516290f04524c6" data-fileext="zip" rel="">rsi_generator.zip</a>
</p>
]]></description><guid isPermaLink="false">1100352</guid><pubDate>Mon, 21 Jul 2025 21:35:37 +0000</pubDate></item><item><title>[M&#xD3;DULO GRATUITO] Crea paneles de administraci&#xF3;n din&#xE1;micos en PrestaShop 1.7.6.0 hasta 8.2.1</title><link>https://forum.prestashop.com/topic/1100262-m%C3%B3dulo-gratuito-crea-paneles-de-administraci%C3%B3n-din%C3%A1micos-en-prestashop-1760-hasta-821/</link><description><![CDATA[<p>
	Hola, comunidad de PrestaShop <span class="ipsEmoji">?</span>
</p>

<p>
	Quería compartir con vosotros un módulo que permite generar paneles de administración de forma dinámica en el back office, con el objetivo de agilizar el desarrollo y dar mayor autonomía al equipo frontend.
</p>

<p>
	<strong><span class="ipsEmoji">?</span> El problema</strong>
</p>

<p>
	En muchos proyectos con PrestaShop, crear paneles de administración en el back office implica tareas repetitivas que consumen tiempo y recursos sin aportar un valor real al proyecto. Además, los equipos frontend muchas veces dependen del backend para tareas tan simples como incluir un bloque HTML editable.
</p>

<p>
	<strong><span class="ipsEmoji">?</span> La solución</strong>
</p>

<p>
	<span class="ipsEmoji">?</span> <a href="https://github.com/jjpeleato/ps-dynamic-admin-panel" rel="external nofollow">https://github.com/jjpeleato/ps-dynamic-admin-panel</a>
</p>

<p>
	Este módulo genera paneles de administración personalizados y de forma dinámica en el backoffice, a partir de un único archivo de configuración llamado "settings.php".
</p>

<p>
	<strong>Es un módulo gratuito, de código abierto y pensado para toda la comunidad.</strong>
</p>

<p>
	<strong>Nota:</strong> Requiere conocimientos básicos de programación para su correcta implementación.
</p>

<p>
	<strong><span class="ipsEmoji">⚙️</span> Características principales</strong>
</p>

<ul><li>
		Soporte multilenguaje completo.
	</li>
	<li>
		Compatibilidad con multitienda.
	</li>
	<li>
		Generación automática de paneles a partir del archivo "settings.php".
	</li>
	<li>
		Organización por pestañas para una mejor usabilidad.
	</li>
	<li>
		Tipos de campos compatibles: switch, text, html (WYSIWYG), image y video.
	</li>
	<li>
		Gestión de archivos multimedia: subida, validación y eliminación.
	</li>
	<li>
		Validación automática de campos requeridos y ficheros.
	</li>
</ul><p>
	<strong><span class="ipsEmoji">?</span> Requisitos</strong>
</p>

<ul><li>
		<strong>PrestaShop:</strong> 1.7.6.0 hasta 8.2.1.
	</li>
	<li>
		<strong>PHP:</strong> Cualquiera soportada por tu versión de PrestaShop.
	</li>
</ul><p>
	Cualquier sugerencia, mejora o reporte será más que bienvenido en el repositorio.
</p>

<p>
	¡Gracias por vuestro tiempo y espero que os sea útil!
</p>

<p>
	Saludos, JJPeleato.
</p>
]]></description><guid isPermaLink="false">1100262</guid><pubDate>Thu, 17 Jul 2025 14:48:07 +0000</pubDate></item><item><title>M&#xF3;dulos y plantillas gratuitas: &#xBF;Idea para gamificaci&#xF3;n en tienda?</title><link>https://forum.prestashop.com/topic/1100030-m%C3%B3dulos-y-plantillas-gratuitas-%C2%BFidea-para-gamificaci%C3%B3n-en-tienda/</link><description><![CDATA[<p>
	¡Hola a toda la comunidad de PrestaShop!
</p>

<p>
	Soy bastante nuevo por aquí, aunque llevo ya un tiempo gestionando una pequeña tienda. Estoy buscando formas de mejorar la interacción de los clientes y se me ocurrió una idea que he visto mucho en apps y juegos: la <strong><a href="https://modhello.io/" rel="external nofollow">gamificación</a></strong>.
</p>

<p>
	Mi plan es añadir una especie de "ruleta de la suerte" donde los visitantes puedan girarla una vez al día para ganar pequeños descuentos, envío gratis, etc. Creo que sería una forma divertida de fidelizar y hacer que vuelvan a la tienda más a menudo.
</p>

<p>
	El problema es que, después de buscar bastante, no encuentro ningún módulo gratuito que haga esto de forma fiable o que sea compatible con las últimas versiones de PrestaShop. La mayoría son de pago y bastante caros para mi presupuesto actual.
</p>

<p>
	¿Alguien conoce algún módulo gratuito o alguna alternativa para implementar algo parecido? ¿O quizás algún desarrollador ha pensado en crear algo similar?
</p>
]]></description><guid isPermaLink="false">1100030</guid><pubDate>Wed, 09 Jul 2025 08:12:11 +0000</pubDate></item><item><title>Carrito de compras sin delay</title><link>https://forum.prestashop.com/topic/1098334-carrito-de-compras-sin-delay/</link><description><![CDATA[<p>
	Hola, pues tengo el carrito de prestashop, lo estuve modificando un poco, pero necesito que tenga una respuesta inmediata.
</p>

<p>
	Suma, resta, muestra cantidad, elimina producto; pero eso, lo hace con un pequeño delay cuando uno apreta varias veces el botón de "+" o "-".
</p>

<p>
	¿Alguna idea?
</p>

<p>
	Ya minimizé gran parte del código .js, .css, y .tpl
</p>

<p>
	PRESTASHOP 8.2.0
</p>

<p>
	Html:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"close-cart-btn"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"window.cartClosedManually=true;document.querySelectorAll('.tvcart-product-list').forEach(el=&gt;</span><span class="pln">el.style.display='none');" style="font-size:xx-large;position:absolute;width:30px;height:30px;top:-35px;right:auto;align-items:center;align-content:center;align-self:center;cursor:pointer;display:flex;z-index:9999;justify-content:center;" aria-label="Cerrar carrito" title="Cerrar"&gt;&amp;times;</span><span class="tag">&lt;/button&gt;</span><span class="pln">
</span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$product.url}"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-list-img"</span><span class="tag">&gt;&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">'tvimage-lazy'</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"{$product.cover.bySize.cart_default.url}"</span><span class="tag">&gt;&lt;/div&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-content"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-list-quentity"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-dropdown-title"</span><span class="tag">&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-quentity"</span><span class="tag">&gt;</span><span class="pln">{$product.quantity}</span><span class="tag">&lt;/span&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvshopping-cart-quentity"</span><span class="tag">&gt;</span><span class="pln">&amp;nbsp;x&amp;nbsp;</span><span class="tag">&lt;/span&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-name"</span><span class="tag">&gt;</span><span class="pln">{$product.name}</span><span class="tag">&lt;/span&gt;&lt;/div&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-remove"</span><span class="tag">&gt;</span><span class="pln">{$url='controller=cart&amp;delete='|cat:$product.id_product}</span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"remove-from-cart tvcmsremove-from-cart"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"nofollow"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$product.remove_from_cart_url}"</span><span class="pln"> </span><span class="atn">data-link-action</span><span class="pun">=</span><span class="atv">"delete-from-cart"</span><span class="pln"> </span><span class="atn">data-id-product</span><span class="pun">=</span><span class="atv">"{$product.id_product|escape:'javascript'}"</span><span class="pln"> </span><span class="atn">data-id-product-attribute</span><span class="pun">=</span><span class="atv">"{$product.id_product_attribute|escape:'javascript'}"</span><span class="pln"> </span><span class="atn">data-id-customization</span><span class="pun">=</span><span class="atv">"{$product.id_customization|escape:'javascript'}"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"{l s='remove from cart' d='Shop.Theme.Actions'}"</span><span class="tag">&gt;&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"material-icons"</span><span class="tag">&gt;</span><span class="pln">&amp;#xe5cd;</span><span class="tag">&lt;/i&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-list-price"</span><span class="tag">&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-price"</span><span class="pln"> </span><span class="atn">data-unit-price</span><span class="pun">=</span><span class="atv">"{$product.unit_price|floatval}"</span><span class="pln"> </span><span class="atn">data-price-format</span><span class="pun">=</span><span class="atv">"{$product.price}"</span><span class="tag">&gt;</span><span class="pln">{$product.total}</span><span class="tag">&lt;/span&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-price"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln">xx-small</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">&amp;nbsp;{$product.unit_price_full}</span><span class="tag">&lt;/span&gt;</span><span class="pln">{if isset($product.unit_price_full)&amp;&amp;!empty($product.unit_price_full)}{if isset($cart)&amp;&amp;isset($cart.products)&amp;&amp;count($cart.products)&gt;0}{assign var="unit_text" value=$product.unit_price_full|regex_replace:'/^[^ ]* /':''}{else}</span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-price"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln">xx-small</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">{$product.unit_price_full}</span><span class="tag">&lt;/span&gt;</span><span class="pln">{/if}{else}{hook h='displayProductPriceBlock' product=$product type="before_price"}</span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-price"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln">xx-small</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">PRECIO DESDE UNA UNID</span><span class="tag">&lt;/span&gt;</span><span class="pln">{/if}{hook h='displayProductPriceBlock' product=$product type="unit_price"}{foreach from=$product.attributes item="property_value" key="property"}</span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">display</span><span class="pun">:</span><span class="pln">none</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;&lt;strong&gt;</span><span class="pln">{$property}</span><span class="tag">&lt;/strong&gt;</span><span class="pln">: {$property_value}</span><span class="tag">&lt;/span&gt;&lt;br&gt;</span><span class="pln">{/foreach}</span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="kwd">font-weight</span><span class="pun">:</span><span class="lit">700</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">{l s='Quantity:' d='Shop.Theme.Checkout'}&amp;nbsp;{$product.cart_quantity}</span><span class="tag">&lt;br&gt;&lt;/p&gt;</span><span class="pln">{if isset($product.is_gift)&amp;&amp;$product.is_gift}</span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"gift-quantity product-cart-qty-{$product.id_product}-{$product.id_product_attribute}"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">display</span><span class="pun">:</span><span class="pln">none</span><span class="kwd">!important</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">{$product.quantity}</span><span class="tag">&lt;/span&gt;</span><span class="pln">{else}</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cart-line"</span><span class="pln"> </span><span class="atn">data-id-product</span><span class="pun">=</span><span class="atv">"{$product.id_product}"</span><span class="pln"> </span><span class="atn">data-id-product-attribute</span><span class="pun">=</span><span class="atv">"{$product.id_product_attribute}"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cart-line"</span><span class="pln"> </span><span class="atn">data-id-product</span><span class="pun">=</span><span class="atv">"{$product.id_product}"</span><span class="pln"> </span><span class="atn">data-id-product-attribute</span><span class="pun">=</span><span class="atv">"{$product.id_product_attribute}"</span><span class="pln"> </span><span class="atn">data-id-customization</span><span class="pun">=</span><span class="atv">"{$product.id_customization}"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"quantity-wrapper"</span><span class="tag">&gt;&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"qty-btn down"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Restar cantidad"</span><span class="tag">&gt;</span><span class="pln">−</span><span class="tag">&lt;/button&gt;&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"js-cart-line-product-quantity"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"{$product.quantity}"</span><span class="pln"> </span><span class="atn">min</span><span class="pun">=</span><span class="atv">"{$product.minimal_quantity}"</span><span class="pln"> </span><span class="atn">readonly</span><span class="pln"> </span><span class="atn">data-product-id</span><span class="pun">=</span><span class="atv">"{$product.id_product}"</span><span class="pln"> </span><span class="atn">data-product-attribute-id</span><span class="pun">=</span><span class="atv">"{$product.id_product_attribute}"</span><span class="pln"> </span><span class="atn">data-update-url</span><span class="pun">=</span><span class="atv">"{$product.update_quantity_url}"</span><span class="pln"> </span><span class="atn">data-up-url</span><span class="pun">=</span><span class="atv">"{$product.up_quantity_url}"</span><span class="pln"> </span><span class="atn">data-down-url</span><span class="pun">=</span><span class="atv">"{$product.down_quantity_url}"</span><span class="tag">&gt;&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"qty-btn up"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Sumar cantidad"</span><span class="tag">&gt;</span><span class="pln">+</span><span class="tag">&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</span><span class="pln">{/if}</span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"remove-from-cart"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"nofollow"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$product.remove_from_cart_url}"</span><span class="pln"> </span><span class="atn">data-link-action</span><span class="pun">=</span><span class="atv">"delete-from-cart"</span><span class="pln"> </span><span class="atn">data-id-product</span><span class="pun">=</span><span class="atv">"{$product.id_product|escape:'javascript'}"</span><span class="pln"> </span><span class="atn">data-id-product-attribute</span><span class="pun">=</span><span class="atv">"{$product.id_product_attribute|escape:'javascript'}"</span><span class="pln"> </span><span class="atn">data-id-customization</span><span class="pun">=</span><span class="atv">"{$product.id_customization|escape:'javascript'}"</span><span class="tag">&gt;&lt;/a&gt;</span><span class="pln">{block name='hook_cart_extra_product_actions'}{hook h='displayCartExtraProductActions' product=$product}{/block}</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-list-attribute"</span><span class="tag">&gt;</span><span class="pln">{foreach $product.attributes as $prod_attb=&gt;$prod_val}</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"tvcart-product-attr"</span><span class="tag">&gt;&lt;span&gt;</span><span class="pln">{$prod_attb}:</span><span class="tag">&lt;/span&gt;</span><span class="pln"> {$prod_val}</span><span class="tag">&lt;/div&gt;</span><span class="pln">{/foreach}</span><span class="tag">&lt;/div&gt;</span><span class="pln">{if $product.customizations|count}</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"customizations"</span><span class="tag">&gt;&lt;ul&gt;</span><span class="pln">{foreach from=$product.customizations item='customization'}</span><span class="tag">&lt;li&gt;&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-quantity"</span><span class="tag">&gt;</span><span class="pln">{$customization.quantity}</span><span class="tag">&lt;/span&gt;&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$customization.remove_from_cart_url}"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"{l s='remove from cart' d='Shop.Theme.Actions'}"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"remove-from-cart"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"nofollow"</span><span class="tag">&gt;</span><span class="pln">{l s='Remove' d='Shop.Theme.Actions'}</span><span class="tag">&lt;/a&gt;&lt;ul&gt;</span><span class="pln">{foreach from=$customization.fields item='field'}</span><span class="tag">&lt;li&gt;&lt;span&gt;</span><span class="pln">{$field.label}</span><span class="tag">&lt;/span&gt;</span><span class="pln">{if $field.type=='text'}</span><span class="tag">&lt;span&gt;</span><span class="pln">{$field.text nofilter}</span><span class="tag">&lt;/span&gt;</span><span class="pln">{else if $field.type=='image'}</span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">'tvimage-lazy'</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"{$field.image.small.url}"</span><span class="tag">&gt;</span><span class="pln">{/if}</span><span class="tag">&lt;/li&gt;</span><span class="pln">{/foreach}</span><span class="tag">&lt;/ul&gt;&lt;/li&gt;</span><span class="pln">{/foreach}</span><span class="tag">&lt;/ul&gt;&lt;/div&gt;</span><span class="pln">{/if}</span><span class="tag">&lt;/div&gt;&lt;/a&gt;</span></pre>

<p>
	Style:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted"><span class="pln">span</span><span class="pun">.</span><span class="pln">input-group-btn-vertical </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12%</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> flex </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">flex-direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
input</span><span class="pun">.</span><span class="pln">js-cart-line-product-quantity</span><span class="pun">.</span><span class="pln">form-control </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
input</span><span class="pun">.</span><span class="pln">js-cart-line-product-quantity </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">quantity-wrapper </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">align-items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">gap</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">qty-btn </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18px</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">@</span><span class="pln">keyframes bounceQty </span><span class="pun">{</span><span class="pln">
  </span><span class="lit">0%</span><span class="pln">   </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="lit">30%</span><span class="pln">  </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1.2</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="lit">60%</span><span class="pln">  </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">0.95</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="lit">100%</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">qty-animated </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">animation</span><span class="pun">:</span><span class="pln"> bounceQty </span><span class="lit">0.4s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	Script:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"DOMContentLoaded"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">?</span> Script de cantidad actualizado y funcionando"</span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">function</span><span class="pln"> animateQty</span><span class="pun">(</span><span class="pln">input</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    input</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">"qty-animated"</span><span class="pun">);</span><span class="pln">
    setTimeout</span><span class="pun">(()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">remove</span><span class="pun">(</span><span class="str">"qty-animated"</span><span class="pun">),</span><span class="pln"> </span><span class="lit">400</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">// <span class="ipsEmoji">?</span> Previene que se agregue el event listener más de una vez</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">qtyBtnHandlerAdded</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"click"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> btn </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">".qty-btn"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">btn</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> wrapper </span><span class="pun">=</span><span class="pln"> btn</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">".quantity-wrapper"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> input </span><span class="pun">=</span><span class="pln"> wrapper</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".js-cart-line-product-quantity"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">input</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> min </span><span class="pun">=</span><span class="pln"> parseInt</span><span class="pun">(</span><span class="pln">input</span><span class="pun">.</span><span class="pln">getAttribute</span><span class="pun">(</span><span class="str">"min"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> downUrl </span><span class="pun">=</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">downUrl</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> upUrl </span><span class="pun">=</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">upUrl</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">let</span><span class="pln"> currentQty </span><span class="pun">=</span><span class="pln"> parseInt</span><span class="pun">(</span><span class="pln">input</span><span class="pun">.</span><span class="pln">value</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> min</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">let</span><span class="pln"> newQty </span><span class="pun">=</span><span class="pln"> currentQty</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">let</span><span class="pln"> targetUrl </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">btn</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="str">"up"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        newQty </span><span class="pun">=</span><span class="pln"> currentQty </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
        targetUrl </span><span class="pun">=</span><span class="pln"> upUrl</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">btn</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="str">"down"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        newQty </span><span class="pun">=</span><span class="pln"> currentQty </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newQty </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          </span><span class="com">// Buscar y usar la URL de eliminar producto</span><span class="pln">
          </span><span class="kwd">const</span><span class="pln"> removeBtn </span><span class="pun">=</span><span class="pln"> wrapper</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.tvcart-product-content'</span><span class="pun">)?.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.remove-from-cart'</span><span class="pun">);</span><span class="pln">
          </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">removeBtn </span><span class="pun">&amp;&amp;</span><span class="pln"> removeBtn</span><span class="pun">.</span><span class="pln">href</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            fetch</span><span class="pun">(</span><span class="pln">removeBtn</span><span class="pun">.</span><span class="pln">href</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
              method</span><span class="pun">:</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">,</span><span class="pln">
              credentials</span><span class="pun">:</span><span class="pln"> </span><span class="str">"same-origin"</span><span class="pln">
            </span><span class="pun">})</span><span class="pln">
            </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">res </span><span class="pun">=&gt;</span><span class="pln"> res</span><span class="pun">.</span><span class="pln">json</span><span class="pun">())</span><span class="pln">
            </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">data </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
              prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">"updateCart"</span><span class="pun">,</span><span class="pln"> data</span><span class="pun">);</span><span class="pln">
              reloadCustomCart</span><span class="pun">();</span><span class="pln">
            </span><span class="pun">})</span><span class="pln">
            </span><span class="pun">.</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">err </span><span class="pun">=&gt;</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">❌</span> Error al eliminar producto:"</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">));</span><span class="pln">
          </span><span class="pun">}</span><span class="pln">
          </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        targetUrl </span><span class="pun">=</span><span class="pln"> downUrl</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">

      input</span><span class="pun">.</span><span class="pln">value </span><span class="pun">=</span><span class="pln"> newQty</span><span class="pun">;</span><span class="pln">
      animateQty</span><span class="pun">(</span><span class="pln">input</span><span class="pun">);</span><span class="pln">

</span><span class="com">// Actualiza el total del producto (si existe)</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> totalPriceEl </span><span class="pun">=</span><span class="pln"> wrapper</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.tvcart-product-content'</span><span class="pun">)?.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.product-price[data-unit-price]'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">totalPriceEl</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> unitPrice </span><span class="pun">=</span><span class="pln"> parseFloat</span><span class="pun">(</span><span class="pln">totalPriceEl</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">unitPrice</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> priceFormat </span><span class="pun">=</span><span class="pln"> totalPriceEl</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">priceFormat</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> total </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">unitPrice </span><span class="pun">*</span><span class="pln"> newQty</span><span class="pun">).</span><span class="pln">toFixed</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> formattedTotal </span><span class="pun">=</span><span class="pln"> priceFormat</span><span class="pun">.</span><span class="pln">replace</span><span class="pun">(</span><span class="str">'%s'</span><span class="pun">,</span><span class="pln"> total</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">().</span><span class="pln">replace</span><span class="pun">(</span><span class="str">/\B(?=(\d{3})+(?!\d))/</span><span class="pln">g</span><span class="pun">,</span><span class="pln"> </span><span class="str">'.'</span><span class="pun">));</span><span class="pln">
  totalPriceEl</span><span class="pun">.</span><span class="pln">textContent </span><span class="pun">=</span><span class="pln"> formattedTotal</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

      fetch</span><span class="pun">(</span><span class="pln">targetUrl</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        method</span><span class="pun">:</span><span class="pln"> </span><span class="str">"POST"</span><span class="pun">,</span><span class="pln">
        credentials</span><span class="pun">:</span><span class="pln"> </span><span class="str">"same-origin"</span><span class="pln">
      </span><span class="pun">})</span><span class="pln">
      </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">res </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> contentType </span><span class="pun">=</span><span class="pln"> res</span><span class="pun">.</span><span class="pln">headers</span><span class="pun">.</span><span class="kwd">get</span><span class="pun">(</span><span class="str">"Content-Type"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">contentType </span><span class="pun">&amp;&amp;</span><span class="pln"> contentType</span><span class="pun">.</span><span class="pln">includes</span><span class="pun">(</span><span class="str">"application/json"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          </span><span class="kwd">return</span><span class="pln"> res</span><span class="pun">.</span><span class="pln">json</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          </span><span class="kwd">return</span><span class="pln"> res</span><span class="pun">.</span><span class="pln">text</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
      </span><span class="pun">})</span><span class="pln">
      </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">data </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">data </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="kwd">typeof</span><span class="pln"> data </span><span class="pun">===</span><span class="pln"> </span><span class="str">"object"</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> data</span><span class="pun">.</span><span class="pln">cart</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">"updateCart"</span><span class="pun">,</span><span class="pln"> data</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">ℹ️</span> Cambio aplicado sin emitir updateCart (respuesta no JSON)"</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        reloadCustomCart</span><span class="pun">();</span><span class="pln">
      </span><span class="pun">})</span><span class="pln">
      </span><span class="pun">.</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">err </span><span class="pun">=&gt;</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">❌</span> Error al actualizar cantidad:"</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">));</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">

    window</span><span class="pun">.</span><span class="pln">qtyBtnHandlerAdded </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Marcamos que ya fue agregado</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">// <span class="ipsEmoji">?</span> Recarga y actualiza el contenido del carrito</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> reloadCustomCart</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> cartWrapper </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartWrapper</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    cartWrapper</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  fetch</span><span class="pun">(</span><span class="pln">window</span><span class="pun">.</span><span class="pln">location</span><span class="pun">.</span><span class="pln">href</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    method</span><span class="pun">:</span><span class="pln"> </span><span class="str">"GET"</span><span class="pun">,</span><span class="pln">
    headers</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="str">"X-Requested-With"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"XMLHttpRequest"</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">})</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">res </span><span class="pun">=&gt;</span><span class="pln"> res</span><span class="pun">.</span><span class="pln">text</span><span class="pun">())</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">html </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> parser </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">DOMParser</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> doc </span><span class="pun">=</span><span class="pln"> parser</span><span class="pun">.</span><span class="pln">parseFromString</span><span class="pun">(</span><span class="pln">html</span><span class="pun">,</span><span class="pln"> </span><span class="str">'text/html'</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// <span class="ipsEmoji">?</span> Reemplazo del listado de productos del carrito</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> newCartList </span><span class="pun">=</span><span class="pln"> doc</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> currentCartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newCartList </span><span class="pun">&amp;&amp;</span><span class="pln"> currentCartList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      currentCartList</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> newCartList</span><span class="pun">.</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// <span class="ipsEmoji">?</span> Reemplazo del resumen del carrito</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> newSummary </span><span class="pun">=</span><span class="pln"> doc</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-summary'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> currentSummary </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-summary'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newSummary </span><span class="pun">&amp;&amp;</span><span class="pln"> currentSummary</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      currentSummary</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> newSummary</span><span class="pun">.</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// <span class="ipsEmoji">?</span> Reemplazo del minicart</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> newMiniCart </span><span class="pun">=</span><span class="pln"> doc</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.blockcart'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> currentMiniCart </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.blockcart'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newMiniCart </span><span class="pun">&amp;&amp;</span><span class="pln"> currentMiniCart</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      currentMiniCart</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> newMiniCart</span><span class="pun">.</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// <span class="ipsEmoji">?</span> Reemplazo de la cantidad de productos en el checkout</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> newSummaryProducts </span><span class="pun">=</span><span class="pln"> doc</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.cart-summary-products'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> currentSummaryProducts </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.cart-summary-products'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newSummaryProducts </span><span class="pun">&amp;&amp;</span><span class="pln"> currentSummaryProducts</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      currentSummaryProducts</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> newSummaryProducts</span><span class="pun">.</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">✅</span> Carrito, totales, minicart y resumen de checkout actualizados visualmente."</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">})</span><span class="pln">
  </span><span class="pun">.</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">err </span><span class="pun">=&gt;</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">"<span class="ipsEmoji">❌</span> Error al recargar el carrito:"</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// <span class="ipsEmoji">?</span> Siempre mantener el carrito visible al recibir updateCart</span><span class="pln">
prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">cartClosedManually</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> toggleBtn </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvshopping-cart-price'</span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">toggleBtn</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    toggleBtn</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
        window</span><span class="pun">.</span><span class="pln">cartClosedManually </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">// Bandera global para saber si el usuario cerró el carrito</span><span class="pln">
window</span><span class="pun">.</span><span class="pln">cartClosedManually </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

</span><span class="com">// Función para abrir el carrito</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> openCart</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  window</span><span class="pun">.</span><span class="pln">cartClosedManually </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// Función para cerrar el carrito manualmente (con la X)</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> closeCart</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  window</span><span class="pun">.</span><span class="pln">cartClosedManually </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// Reaplicar comportamiento luego de que el carrito se actualice con AJAX</span><span class="pln">
prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  setTimeout</span><span class="pun">(()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> closeButton </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.close-cart-btn'</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// Solo mostrar el carrito si el usuario no lo cerró manualmente</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">cartClosedManually</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Reasignar el listener al botón de cerrar</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">closeButton</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      closeButton</span><span class="pun">.</span><span class="pln">removeEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> closeCart</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Evitar duplicados</span><span class="pln">
      closeButton</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> closeCart</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln"> </span><span class="com">// Espera para asegurar que el DOM esté actualizado</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">// Evento al cargar la página</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">// Mostrar el carrito al hacer clic en el total del carrito</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> toggleBtn </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvshopping-cart-price'</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">toggleBtn</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    toggleBtn</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      openCart</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">// <span class="ipsEmoji">?</span> Forzar visibilidad del carrito mientras se detectan cambios</span><span class="pln">
</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> forceCartVisibleDuringUpdates</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">cartList</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

  </span><span class="com">// Marcar como "actualizando carrito"</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> setCartUpdating </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">updating</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    cartList</span><span class="pun">.</span><span class="pln">setAttribute</span><span class="pun">(</span><span class="str">'data-updating'</span><span class="pun">,</span><span class="pln"> updating </span><span class="pun">?</span><span class="pln"> </span><span class="str">'true'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">'false'</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">updating </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">cartClosedManually</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">};</span><span class="pln">

  </span><span class="com">// Hook de PrestaShop para detectar eventos relacionados al carrito</span><span class="pln">
  prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    setCartUpdating</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// Esperamos un momento para "desmarcar" la actualización</span><span class="pln">
    setTimeout</span><span class="pun">(()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      setCartUpdating</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">cartClosedManually</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Nos aseguramos de que siga visible</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln"> </span><span class="com">// puedes ajustar este delay según rendimiento del sitio</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  </span><span class="com">// Observa si hay cambios visibles en el carrito</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> observer </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">MutationObserver</span><span class="pun">(()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">window</span><span class="pun">.</span><span class="pln">cartClosedManually</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  observer</span><span class="pun">.</span><span class="pln">observe</span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> childList</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> subtree</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
</span><span class="pun">})();</span></pre>

<p>
	SCRIPT DEL HEADER:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="com">//CANTIDADES</span><span class="pln">
  </span><span class="kwd">function</span><span class="pln"> updateCartQuantity</span><span class="pun">(</span><span class="pln">productId</span><span class="pun">,</span><span class="pln"> productAttributeId</span><span class="pun">,</span><span class="pln"> newQty</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> action </span><span class="pun">=</span><span class="pln"> newQty </span><span class="pun">===</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'delete'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">'update'</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> requestData </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      ajax</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
      action</span><span class="pun">:</span><span class="pln"> action</span><span class="pun">,</span><span class="pln">
      id_product</span><span class="pun">:</span><span class="pln"> productId</span><span class="pun">,</span><span class="pln">
      id_product_attribute</span><span class="pun">:</span><span class="pln"> productAttributeId</span><span class="pun">,</span><span class="pln">
    </span><span class="pun">};</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">action </span><span class="pun">===</span><span class="pln"> </span><span class="str">'update'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      requestData</span><span class="pun">.</span><span class="pln">qty </span><span class="pun">=</span><span class="pln"> newQty</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    $</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="pln">prestashop</span><span class="pun">.</span><span class="pln">urls</span><span class="pun">.</span><span class="pln">pages</span><span class="pun">.</span><span class="pln">cart</span><span class="pun">,</span><span class="pln"> requestData</span><span class="pun">)</span><span class="pln">
      </span><span class="pun">.</span><span class="pln">done</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">resp</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          reason</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            idProduct</span><span class="pun">:</span><span class="pln"> productId</span><span class="pun">,</span><span class="pln">
            idProductAttribute</span><span class="pun">:</span><span class="pln"> productAttributeId</span><span class="pun">,</span><span class="pln">
            quantity</span><span class="pun">:</span><span class="pln"> newQty
          </span><span class="pun">},</span><span class="pln">
          resp</span><span class="pun">:</span><span class="pln"> resp
        </span><span class="pun">});</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">function</span><span class="pln"> bindTouchSpinEvents</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $</span><span class="pun">(</span><span class="str">'.js-cart-line-product-quantity'</span><span class="pun">).</span><span class="pln">off</span><span class="pun">(</span><span class="str">'change'</span><span class="pun">).</span><span class="pln">on</span><span class="pun">(</span><span class="str">'change'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> $input </span><span class="pun">=</span><span class="pln"> $</span><span class="pun">(</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> newQty </span><span class="pun">=</span><span class="pln"> parseInt</span><span class="pun">(</span><span class="pln">$input</span><span class="pun">.</span><span class="pln">val</span><span class="pun">());</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> $line </span><span class="pun">=</span><span class="pln"> $input</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'[data-id-product]'</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> idProduct </span><span class="pun">=</span><span class="pln"> $line</span><span class="pun">.</span><span class="pln">data</span><span class="pun">(</span><span class="str">'id-product'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> idProductAttribute </span><span class="pun">=</span><span class="pln"> $line</span><span class="pun">.</span><span class="pln">data</span><span class="pun">(</span><span class="str">'id-product-attribute'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">isNaN</span><span class="pun">(</span><span class="pln">newQty</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        updateCartQuantity</span><span class="pun">(</span><span class="pln">idProduct</span><span class="pun">,</span><span class="pln"> idProductAttribute</span><span class="pun">,</span><span class="pln"> newQty</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    bindTouchSpinEvents</span><span class="pun">();</span><span class="pln">
    prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      bindTouchSpinEvents</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

</span><span class="com">//ELIMINAR PRODUCTO</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> removeBtn </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.remove-from-cart'</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">removeBtn </span><span class="pun">&amp;&amp;</span><span class="pln"> removeBtn</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">linkAction </span><span class="pun">===</span><span class="pln"> </span><span class="str">'delete-from-cart'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      e</span><span class="pun">.</span><span class="pln">preventDefault</span><span class="pun">();</span><span class="pln"> </span><span class="com">// Evita la recarga</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> url </span><span class="pun">=</span><span class="pln"> removeBtn</span><span class="pun">.</span><span class="pln">getAttribute</span><span class="pun">(</span><span class="str">'href'</span><span class="pun">);</span><span class="pln">

      $</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="pln">url</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> ajax</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">done</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">resp</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            reason</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> linkAction</span><span class="pun">:</span><span class="pln"> </span><span class="str">'delete-from-cart'</span><span class="pln"> </span><span class="pun">},</span><span class="pln">
            resp</span><span class="pun">:</span><span class="pln"> resp
          </span><span class="pun">});</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">fail</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">'Error al eliminar del carrito:'</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">//MOSTRAR BLOQUE CARRITO DE COMPRAS AL DARLE CLIC AL CONTADOR DE ITEMS</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> blockCart </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.blockcart'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">blockCart</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        blockCart</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'show-cart-panel'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">

  </span><span class="com">// Evita cerrar el carrito si se hace clic en un botón de cantidad o dentro del bloque del carrito</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> clickedQtyBtn </span><span class="pun">=</span><span class="pln"> event</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.qty-btn, .quantity-wrapper, .js-cart-line-product-quantity'</span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    blockCart </span><span class="pun">&amp;&amp;</span><span class="pln">
    </span><span class="pun">!</span><span class="pln">blockCart</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="pln">event</span><span class="pun">.</span><span class="pln">target</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln">
    </span><span class="pun">!</span><span class="pln">clickedQtyBtn </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="com">// <span class="ipsEmoji">?</span> Añadido para ignorar clicks sobre botones o inputs de cantidad</span><span class="pln">
    blockCart</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="str">'show-cart-panel'</span><span class="pun">)</span><span class="pln">
  </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    blockCart</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">remove</span><span class="pun">(</span><span class="str">'show-cart-panel'</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">};</span><span class="pln">

  </span><span class="pun">});</span><span class="pln">

</span><span class="com">//ALTERNAR MOSTRAR-OCULTAR BLOQUE DE CARRITO DE COMPRAS AL DARLE CLIC AL CONTADOR DE ITEMS</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> cartTrigger </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.tvshopping-cart-containt-box, .tvshopping-cart-inner, .tvshopping-cart-price'</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartTrigger</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> cartList </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.tvcart-product-list'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> currentDisplay </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">getComputedStyle</span><span class="pun">(</span><span class="pln">cartList</span><span class="pun">).</span><span class="pln">display</span><span class="pun">;</span><span class="pln">
        cartList</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">currentDisplay </span><span class="pun">===</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">'block'</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">//ELIMINA UN PRODUCTO DEL CARRITO SI ÉSTE BAJA DE CANTIDAD 1</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">// 1. Si el usuario baja desde 1 con el botón de restar (↓)</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> downBtn </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.bootstrap-touchspin-down, .touchspin-down'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">downBtn</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">const</span><span class="pln"> input </span><span class="pun">=</span><span class="pln"> downBtn</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.cart-line'</span><span class="pun">)?.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.js-cart-line-product-quantity'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">input</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">const</span><span class="pln"> currentQty </span><span class="pun">=</span><span class="pln"> parseInt</span><span class="pun">(</span><span class="pln">input</span><span class="pun">.</span><span class="pln">value</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> updateUrl </span><span class="pun">=</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">updateUrl</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">currentQty </span><span class="pun">===</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> updateUrl</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      e</span><span class="pun">.</span><span class="pln">preventDefault</span><span class="pun">();</span><span class="pln">

      $</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="pln">updateUrl</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> ajax</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> qty</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">done</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">resp</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            reason</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
              idProduct</span><span class="pun">:</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">productId</span><span class="pun">,</span><span class="pln">
              linkAction</span><span class="pun">:</span><span class="pln"> </span><span class="str">'delete-from-cart'</span><span class="pun">,</span><span class="pln">
              quantity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
            </span><span class="pun">},</span><span class="pln">
            resp</span><span class="pun">:</span><span class="pln"> resp
          </span><span class="pun">});</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">fail</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">'Error al eliminar con botón ↓:'</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  </span><span class="com">// 2. Si el usuario escribe 0 manualmente</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'change'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> input </span><span class="pun">=</span><span class="pln"> e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="str">'.js-cart-line-product-quantity'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">input</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">const</span><span class="pln"> newQty </span><span class="pun">=</span><span class="pln"> parseInt</span><span class="pun">(</span><span class="pln">input</span><span class="pun">.</span><span class="pln">value</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> updateUrl </span><span class="pun">=</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">updateUrl</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">newQty </span><span class="pun">&lt;=</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> updateUrl</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      $</span><span class="pun">.</span><span class="pln">post</span><span class="pun">(</span><span class="pln">updateUrl</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> ajax</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> qty</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">done</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">resp</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          prestashop</span><span class="pun">.</span><span class="pln">emit</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            reason</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
              idProduct</span><span class="pun">:</span><span class="pln"> input</span><span class="pun">.</span><span class="pln">dataset</span><span class="pun">.</span><span class="pln">productId</span><span class="pun">,</span><span class="pln">
              linkAction</span><span class="pun">:</span><span class="pln"> </span><span class="str">'delete-from-cart'</span><span class="pun">,</span><span class="pln">
              quantity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
            </span><span class="pun">},</span><span class="pln">
            resp</span><span class="pun">:</span><span class="pln"> resp
          </span><span class="pun">});</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">fail</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">'Error al eliminar al escribir 0:'</span><span class="pun">,</span><span class="pln"> err</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="com">//OCULTA LA OPCIÓN "CREAR CUENTA" SI EL USUARIO ESTÁ LOGUEADO</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="str">'page-customer-logged-in'</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> registerLink </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.register-link'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">registerLink</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        registerLink</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">var</span><span class="pln"> isLogged </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">contains</span><span class="pun">(</span><span class="str">'page-customer-logged-in'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isLogged</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">var</span><span class="pln"> registerLink </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'li.register-link'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">registerLink</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        registerLink</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">var</span><span class="pln"> isLoggedIn </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.user-info a[href*="my-account"]'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isLoggedIn</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">var</span><span class="pln"> regLink </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'.register-link'</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">regLink</span><span class="pun">)</span><span class="pln"> regLink</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">

  </span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> CART_SELECTOR </span><span class="pun">=</span><span class="pln"> </span><span class="str">'.tvcart-product-list'</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> TOGGLE_BTN_SEL </span><span class="pun">=</span><span class="pln"> </span><span class="str">'.tvshopping-cart-containt-box, .tvshopping-cart-inner, .tvshopping-cart-price'</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> CLOSE_BTN_SEL </span><span class="pun">=</span><span class="pln"> </span><span class="str">'.close-cart-btn'</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> STORAGE_KEY </span><span class="pun">=</span><span class="pln"> </span><span class="str">'alishop_cart_closed'</span><span class="pun">;</span><span class="pln">

    </span><span class="com">// Devuelve true si estaba marcado como cerrado</span><span class="pln">
    </span><span class="kwd">function</span><span class="pln"> isClosed</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">return</span><span class="pln"> localStorage</span><span class="pun">.</span><span class="pln">getItem</span><span class="pun">(</span><span class="pln">STORAGE_KEY</span><span class="pun">)</span><span class="pln"> </span><span class="pun">===</span><span class="pln"> </span><span class="str">'true'</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">function</span><span class="pln"> applyState</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> cart </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="pln">CART_SELECTOR</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">cart</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">warn</span><span class="pun">(</span><span class="str">'Cart selector no encontrado:'</span><span class="pun">,</span><span class="pln"> CART_SELECTOR</span><span class="pun">);</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isClosed</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] Estado: CERRADO (hide)'</span><span class="pun">);</span><span class="pln">
        cart</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] Estado: ABIERTO (show)'</span><span class="pun">);</span><span class="pln">
        cart</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'block'</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">function</span><span class="pln"> openCart</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] openCart()'</span><span class="pun">);</span><span class="pln">
      localStorage</span><span class="pun">.</span><span class="pln">setItem</span><span class="pun">(</span><span class="pln">STORAGE_KEY</span><span class="pun">,</span><span class="pln"> </span><span class="str">'false'</span><span class="pun">);</span><span class="pln">
      applyState</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">function</span><span class="pln"> closeCart</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] closeCart()'</span><span class="pun">);</span><span class="pln">
      localStorage</span><span class="pun">.</span><span class="pln">setItem</span><span class="pun">(</span><span class="pln">STORAGE_KEY</span><span class="pun">,</span><span class="pln"> </span><span class="str">'true'</span><span class="pun">);</span><span class="pln">
      applyState</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="com">// Inicializamos al cargar la página</span><span class="pln">
    document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] DOMContentLoaded → aplicando estado guardado'</span><span class="pun">);</span><span class="pln">
      applyState</span><span class="pun">();</span><span class="pln">

      </span><span class="com">// Toggle al clic en el ícono de items</span><span class="pln">
      document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="pln">TOGGLE_BTN_SEL</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          e</span><span class="pun">.</span><span class="pln">preventDefault</span><span class="pun">();</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] Click en TOGGLE_BTN_SEL'</span><span class="pun">);</span><span class="pln">
          openCart</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">

      </span><span class="com">// Cerrar al clic en la X</span><span class="pln">
      document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">closest</span><span class="pun">(</span><span class="pln">CLOSE_BTN_SEL</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          e</span><span class="pun">.</span><span class="pln">preventDefault</span><span class="pun">();</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] Click en CLOSE_BTN_SEL'</span><span class="pun">);</span><span class="pln">
          closeCart</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">

      </span><span class="com">// Cada vez que PrestaShop emita updateCart tras AJAX</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">window</span><span class="pun">.</span><span class="pln">prestashop</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        prestashop</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">'updateCart'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'[Cart] evento updateCart recibido'</span><span class="pun">);</span><span class="pln">
          applyState</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">});</span><span class="pln">
      </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        console</span><span class="pun">.</span><span class="pln">warn</span><span class="pun">(</span><span class="str">'PrestaShop JS no encontrado'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">})();</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> forceReflow</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'none'</span><span class="pun">;</span><span class="pln">
  </span><span class="com">// lectura forzada:</span><span class="pln">
  </span><span class="kwd">void</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">offsetHeight</span><span class="pun">;</span><span class="pln">
  document</span><span class="pun">.</span><span class="pln">body</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

window</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'load'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">'ul#top-menu'</span><span class="pun">).</span><span class="pln">style</span><span class="pun">.</span><span class="pln">display </span><span class="pun">=</span><span class="pln"> </span><span class="str">'flex'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'DOMContentLoaded'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> currentUrl </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">location</span><span class="pun">.</span><span class="pln">href</span><span class="pun">.</span><span class="pln">split</span><span class="pun">(</span><span class="str">'#'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">split</span><span class="pun">(</span><span class="str">'?'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">

    document</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">'a.dropdown-item.d-flex'</span><span class="pun">).</span><span class="pln">forEach</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">link</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> linkUrl </span><span class="pun">=</span><span class="pln"> link</span><span class="pun">.</span><span class="pln">href</span><span class="pun">.</span><span class="pln">split</span><span class="pun">(</span><span class="str">'#'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">split</span><span class="pun">(</span><span class="str">'?'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">

      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">linkUrl </span><span class="pun">===</span><span class="pln"> currentUrl</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        link</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'active'</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">});</span><span class="pln">
  </span><span class="pun">});</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1098334</guid><pubDate>Thu, 15 May 2025 18:37:08 +0000</pubDate></item><item><title>1-Click Upgrade  actualizar a 8.2.0</title><link>https://forum.prestashop.com/topic/1094253-1-click-upgrade-actualizar-a-820/</link><description><![CDATA[<p>
	es aconsejable? parece que la ultima versión no esta traducida bien.
</p>

<p>
	 
</p>

<p>
	que consejo me dan.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1094253</guid><pubDate>Wed, 15 Jan 2025 11:56:54 +0000</pubDate></item><item><title>modulo basico para cambiar la forma en que se muestran los productos en prestashop</title><link>https://forum.prestashop.com/topic/1096929-modulo-basico-para-cambiar-la-forma-en-que-se-muestran-los-productos-en-prestashop/</link><description><![CDATA[<p>
	Buenas tardes,
</p>

<p>
	alquien sabe de algun modulo basico para cambiar el aspecto de los listados de productos en prestashop, parece que es un tema recurrente que todo el mundo quiere cambiar pero no encuentro nada al respecto, de igual forma, alguien sabe que ficheros exactamente hay que modificar para hacer esto? mi instalacion tiene la version 8. Muchas gracias a todos
</p>
]]></description><guid isPermaLink="false">1096929</guid><pubDate>Sat, 29 Mar 2025 10:30:48 +0000</pubDate></item><item><title>Busco modulo Amazon para integrar en Prestashop</title><link>https://forum.prestashop.com/topic/1096485-busco-modulo-amazon-para-integrar-en-prestashop/</link><description><![CDATA[<p>
	Hola, busco un módulo que me permita a través de mi tienda que los clientes puedan hacer búsquedas en amazon, y comprar los productos de Amazon a través de nuestra tienda.
</p>

<p>
	Algo como lo que hace esta página <a href="https://www.dimecuba.com/envios/amazon-para-cuba" rel="external nofollow">https://www.dimecuba.com/envios/amazon-para-cuba</a>
</p>

<p>
	<a href="https://www.dimecuba.com/envios/amazon-para-cuba" rel="external nofollow">https://www.dimecuba.com/envios/amazon-para-cuba</a>
</p>

<p>
	Tú puedes buscar el producto que sea, no hace falta que lo tengas en tu tienda, y comprarlo.
</p>

<p>
	También estoy interesado para otros marketplace como Wallmart y Shein.
</p>

<p>
	No tiene que importar mis productos a Amazon si no poder vender los de Amazon a través de mí comercio.
</p>

<p>
	 
</p>

<p>
	Gracias y saludos,<br />
	 
</p>
]]></description><guid isPermaLink="false">1096485</guid><pubDate>Tue, 18 Mar 2025 11:18:05 +0000</pubDate></item><item><title>M&#xF3;dulo Men&#xFA; plantilla ClassicBlinders</title><link>https://forum.prestashop.com/topic/1095508-m%C3%B3dulo-men%C3%BA-plantilla-classicblinders/</link><description><![CDATA[<p>
	Hola, 
</p>

<p>
	Tengo un problemilla con el menú, en el pc se ve bien pero en la versión movil no se ve nada, se despliega pero sale en blanco todo, alguien sabe porque puede pasar esto? 
</p>

<p>
	He buscado por el foro y he probado un par de cosas pero no han funcionado. 
</p>

<p>
	www.distribucionespardo.com/tienda
</p>

<p>
	Gracias de antemano.
</p>
]]></description><guid isPermaLink="false">1095508</guid><pubDate>Tue, 18 Feb 2025 16:28:17 +0000</pubDate></item><item><title>[M&#xF3;dulo gratuito] SmartBanner promociona tu aplicaci&#xF3;n.</title><link>https://forum.prestashop.com/topic/1091716-m%C3%B3dulo-gratuito-smartbanner-promociona-tu-aplicaci%C3%B3n/</link><description><![CDATA[<p>
	<strong><a href="https://github.com/JoseManuelPedraja/smartbanner" rel="external nofollow">Smartbanner</a></strong>
</p>

<p>
	Un módulo de PrestaShop para promocionar su aplicación Android o iOS con un SmartBanner personalizable, que permite una fácil promoción de la aplicación desde su tienda en línea. Este módulo proporciona una interfaz de back-office para un control total sobre el contenido del banner, incluidos los detalles de la aplicación, las imágenes y los enlaces a su aplicación tanto en la App Store como en Google Play.  Instalación Clone o descargue el repositorio en su directorio de módulos de PrestaShop.
</p>

<p>
	<img alt="screenshot-ios.png.e452fcc5352df39bb184da4c2fd40c58.png.888cb14b48d1c923b271eda4d3bb73dd.png" class="ipsImage ipsImage_thumbnailed" data-fileid="328329" data-ratio="56.51" style="height:auto;" width="361" data-src="//media.invisioncic.com/t336404/monthly_2024_10/screenshot-ios.png.e452fcc5352df39bb184da4c2fd40c58.png.888cb14b48d1c923b271eda4d3bb73dd.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /><img alt="screenshot-android.png.0a87fd5d05f5432571f2204e10c3c7ed.png.e236bd335d56b3f88eba08a3c6c74134.png" class="ipsImage ipsImage_thumbnailed" data-fileid="328330" data-ratio="44.93" style="height:auto;" width="454" data-src="//media.invisioncic.com/t336404/monthly_2024_10/screenshot-android.png.0a87fd5d05f5432571f2204e10c3c7ed.png.e236bd335d56b3f88eba08a3c6c74134.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	En el back-office de PrestaShop, navegue hasta Módulos &gt; Administrador de módulos, busque el módulo SmartBanner y haga clic en Instalar. Después de la instalación, configure el banner en Módulos &gt; Administrador de módulos &gt; Configurar para SmartBanner. Características Muestre un banner en su sitio para promocionar su aplicación móvil. Texto, imágenes y enlaces totalmente personalizables. Control sobre la apariencia y la configuración directamente desde el back-office de PrestaShop.
</p>

<p>
	Compatibilidad con plataformas Android e iOS. Documentación Visite la Wiki para obtener la documentación completa, incluidas las instrucciones de configuración detalladas y los consejos para la resolución de problemas. Licencia Este proyecto tiene licencia GNU. Consulte el archivo LICENSE para obtener más detalles.
</p>

<p>
	Este módulo se basa en el proyecto <a href="https://github.com/ain/smartbanner.js/tree/main" rel="external nofollow">smartbanner.js de ain.</a>
</p>

<p>
	 
</p>

<p>
	<strong><a href="https://github.com/JoseManuelPedraja/smartbanner/releases/download/1.0.1/smartbanner.zip" rel="external nofollow">GITHUB DONWLOAD</a></strong>
</p>

<p>
	<strong><a href="https://github.com/JoseManuelPedraja/smartbanner" rel="external nofollow">GitHub</a></strong>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="328328" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=328328&amp;key=88273230c2abbb8e5764c23a3cd72a8f" rel="">smartbanner.zip</a>
</p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=331180&amp;key=b9fc77682f51e8d798681faeb24843a6" data-fileExt='zip' data-fileid='331180' data-filekey='b9fc77682f51e8d798681faeb24843a6'>smartbanner.zip</a></p>]]></description><guid isPermaLink="false">1091716</guid><pubDate>Wed, 23 Oct 2024 12:54:03 +0000</pubDate></item><item><title>Configurar plantilla ClassicBlinder</title><link>https://forum.prestashop.com/topic/1077097-configurar-plantilla-classicblinder/</link><description><![CDATA[<p>
	Hola,
</p>

<p>
	 
</p>

<p>
	Como no he encontrado ningún hilo sobre el tema abro este para dudas sobre esta plantilla.
</p>

<p>
	Esta es quizás la mejor documentación que he encontrado.
</p>

<p>
	<a href="https://devblinders.com/es/blog/instalar-y-configurar-tema-classicblinders.html" rel="external nofollow">https://devblinders.com/es/blog/instalar-y-configurar-tema-classicblinders.html</a>
</p>

<p>
	 
</p>

<p>
	¿Alguien sabrá como cambiar el color negro del texto del Menú? Porque desde "Theme" no he lo he conseguido.
</p>

<p>
	 
</p>

<p>
	¿Y qué tamaño sería el ideal para las marcas? Porque las que tengo cargadas son asimétricas y no se ve bien. ¿Y qué creen que es mejor poner las marcas con sus colores originales o en escala de grises?
</p>

<p>
	 
</p>

<p>
	Saludos
</p>
]]></description><guid isPermaLink="false">1077097</guid><pubDate>Wed, 31 May 2023 09:12:40 +0000</pubDate></item><item><title>M&#xF3;dulo de CORREOS actualizado. (PS 8.x)</title><link>https://forum.prestashop.com/topic/1078286-m%C3%B3dulo-de-correos-actualizado-ps-8x/</link><description><![CDATA[<p>
	Correos nos sorprende con su actualización del módulo para envíos.
</p>

<p>
	Probado en PS 8.0.3 PHP 8.0
</p>

<p>
	Bastante fácil de configurar y muy intuitivo. <span class="ipsEmoji">?</span>
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=311905&amp;key=c1f8f8c20519c8e5b45248078349a4b0" data-fileExt='zip' data-fileid='311905' data-filekey='c1f8f8c20519c8e5b45248078349a4b0'>ps_correosoficial_1.2.1.0.zip</a></p>]]></description><guid isPermaLink="false">1078286</guid><pubDate>Wed, 12 Jul 2023 08:03:17 +0000</pubDate></item><item><title>Errores en m&#xF3;dulo jmsmegamenu, en Men&#xFA; Manager</title><link>https://forum.prestashop.com/topic/1093336-errores-en-m%C3%B3dulo-jmsmegamenu-en-men%C3%BA-manager/</link><description><![CDATA[<p>
	Hola, me aparece este error al entrar en el módulo jmsmegamenu, en Menú Manager, estoy en modo depuración, (prestashop 1.7.8.0). Quiero modificar el menú, pero al salir estos errores no puedo continuar. Gracias:
</p>

<p>
	 
</p>

<p>
	in modules/jmspagebuilder/jmspagebuilder.php (line 249)
</p>

<p>
	}    <br />
	public function hookDisplayBackOfficeHeader()    <br />
	{        <br />
	$this-&gt;context-&gt;controller-&gt;addCSS(_MODULE_DIR_.$this-&gt;module-&gt;name.'/views/css/adminicon.css');            <br />
	}    <br />
	public function getHomepageBody($id) {        <br />
	$homepage = $this-&gt;getCurrentHomePage($id);       <br />
	if (!$homepage) return '';       <br />
	$params = $homepage['params'];
</p>

<p>
	<br />
	JmsPageBuilder-&gt;hookDisplayBackOfficeHeader()<br />
	in classes/Hook.php (line 997)
</p>

<p>
	HookCore::coreCallHook()<br />
	in classes/Hook.php (line 421)
</p>

<p>
	HookCore::callHookOn()<br />
	in classes/Hook.php (line 934)
</p>

<p>
	HookCore::exec()<br />
	in classes/controller/AdminController.php (line 1984)
</p>

<p>
	AdminControllerCore-&gt;initHeader()<br />
	in classes/controller/Controller.php (line 302)
</p>

<p>
	ControllerCore-&gt;run()<br />
	in classes/Dispatcher.php (line 518)
</p>

<p>
	<br />
	 
</p>
]]></description><guid isPermaLink="false">1093336</guid><pubDate>Thu, 12 Dec 2024 19:30:28 +0000</pubDate></item><item><title>[M&#xF3;dulo gratis] Recaptcha v3 de Google en formularios de registro, contacto y newsletter</title><link>https://forum.prestashop.com/topic/1023463-m%C3%B3dulo-gratis-recaptcha-v3-de-google-en-formularios-de-registro-contacto-y-newsletter/</link><description><![CDATA[
<p>
	Hace unos días me contactó un cliente que empezaba a tener problemas de spam y registros diarios de usuarios "fantasmas" en su Prestashop, con datos falsos (bots). Lo primero que se me ocurrió fue buscar un módulo para integrar el recaptcha de Google en los formularios. Encontré uno gratuito, el <a href="https://github.com/nenes25/eicaptcha/releases" rel="external nofollow">eicaptcha</a>, pero es para la versión v2, que obliga al usuario a tener que escribir un código o resolver un pequeño puzzle para pasar la verificación. La versión 3 en cambio, pasa desapercibida y normalmente no requiere intervención del usuario, por lo que resulta mucho menos "disuasoria" para el usuario legítimo que quiere enviar un mensaje o registrarse como cliente en la web.
</p>

<p>
	Por tanto, intenté localizar algo para la versión 3 del Recaptcha de Google, pero lo único que encontré fue un par de módulos comerciales, uno incluso se anunciaba como "con inteligencia artificial" y pedían 50 euros por él. Veo lógico que la gente quiera cobrar por su trabajo, pero me parece mucha cara "vender" algo con el reclamo de "inteligencia artificial", cuando esa inteligencia no la has programado tú, sino que estás usando un servicio de Google y tu módulo lo único que hace es integrarlo dentro de los formularios de Prestashop para que funcione, a un precio a mi juicio excesivo para lo que hace (modificar un par de formularios y realizar la verificación de un campo que además te da Google el resultado).
</p>

<p>
	De modo que le eché un vistazo a ver cómo funcionaba la integración (<a href="https://www.danipastor.es/como-integrar-instalar-o-configurar-recaptcha-v3-de-google-en-un-formulario-con-php-enviado-por-post/" rel="external nofollow">esta página</a> me aclaró mucho las cosas), y me puse y en un par de horitas (o más bien 4 ó 5, porque cambié varias veces de opinión sobre los hooks a utilizar) tenía un módulo funcionando.
</p>

<p>
	Lo dejo aquí para quien lo necesite. Antes de usarlo, algunas consideraciones:
</p>

<ul><li>
		El módulo lo he creado como he explicado, lo he probado en 2 instalaciones de Prestashop y en principio funciona sin problemas, lo adjunto aquí para quien lo quiera, pero es software gratis y "as-is", es decir, no ofrezco garantías de que vaya a funcionar en todos los casos, ni me hago responsable si no funciona como debería. En el caso de que lo instales, tú eres el responsable de comprobar que los formularios siguen funcionando de forma adecuada. Si no es así, con desactivarlo o desinstalarlo todo volverá a estar como antes.
	</li>
	<li>
		<strong>El módulo es para la versión 1.7.1 de Prestashop o superior</strong>. No funciona con versiones anteriores porque algunos de los "hooks" que utiliza creo que solo están presentes desde la versión 1.7.1.
	</li>
	<li>
		El módulo permite activar el recaptcha de forma general, y luego de forma particular en el formulario de registro, en de contacto y en el de suscripción a la newsletter, por separado.
	</li>
	<li>
		Si se activa en el formulario de registro, también se activará para el registro que se puede hacer directamente en el checkout y para la compra como invitado (esto es algo que está hecho así de forma intencionada, porque por ahí también te pueden colar registros "fantasmas").
	</li>
	<li>
		No lo he probado en instalaciones que no usen el checkout estándar de Prestashop y lleven algún módulo de "compra en un paso", y no sé si opera correctamente con ellas o no. En principio, debido a la forma que tiene de funcionar no debería dar problemas, pero como no he hecho ninguna prueba, no puedo asegurarlo.
	</li>
	<li>
		<strong>Para que el módulo funcione necesitas, lógicamente, dos claves del recaptcha v3 de Google, la clave del sitio y la clave secreta</strong>. Esas claves las tienes que generar con tu cuenta de Google desde aquí: <a href="https://www.google.com/recaptcha/admin/create" rel="external nofollow">https://www.google.com/recaptcha/admin/create</a>
	</li>
	<li>
		<strong>Para que funcione en el formulario de contacto debe estar actualizada la template de ese formulario para que incluya el hook del GDPR</strong> (ley de protección de datos). Las versiones recientes del módulo de contacto lo incluyen todas, pero hay temas que tienen hecho overrides de esa plantilla y no están actualizadas con ese hook. Lamentablemente, la template del módulo de contacto es el único hook que incluye, por lo que hay que utilizar ése.
	</li>
	<li>
		Cualquier problema que tengáis con él podéis ponerlo aquí e intentaremos solucionarlo.
	</li>
</ul><p>
	<img alt="image.png.8d641e2c412bb844865b269ce0ba5763.png" class="ipsImage ipsImage_thumbnailed" data-fileid="248868" data-ratio="59.04" style="height:auto;" width="940" data-src="https://forum.prestashop.com/uploads/monthly_2020_07/image.png.8d641e2c412bb844865b269ce0ba5763.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	 
</p>

<p>
	<strong>Versión 1.1 disponible:</strong>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="248925" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=248925" rel="">ftm_recaptchav3.zip</a>
</p>
]]></description><guid isPermaLink="false">1023463</guid><pubDate>Sun, 17 May 2020 10:13:03 +0000</pubDate></item><item><title>M&#xF3;dulo Prestashop Psysh</title><link>https://forum.prestashop.com/topic/1091522-m%C3%B3dulo-prestashop-psysh/</link><description><![CDATA[<p>
	 
</p>

<p>
	Módulo para integrar shell interactiva REPL de <strong><u><a href="https://psysh.org/" rel="external nofollow">PsySH</a></u></strong>
</p>

<p>
	Esta shell permite ejecutar tareas de depuración de manera similar a como lo hace por ejemplo Tinker en Laravel
</p>

<p>
	Desde la configuración del módulo es posible activar o desactivar el comando CLI que permite acceder al REPL
</p>

<p>
	<img alt="spacer.png" class="ipsImage" data-ratio="75.08" height="533" style="height:auto;" width="1000" data-src="https://i.ibb.co/M2NK0ZM/Captura-de-pantalla-2024-10-16-a-las-16-51-56.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	<strong><a href="https://github.com/venturaproject/prestapsysh" rel="external nofollow">Descargar módulo Prestashop Psysh <span class="ipsEmoji">➡️</span></a></strong>
</p>
]]></description><guid isPermaLink="false">1091522</guid><pubDate>Thu, 17 Oct 2024 07:42:57 +0000</pubDate></item><item><title>M&#xF3;dulo Reporte Facturaci&#xF3;n</title><link>https://forum.prestashop.com/topic/1025028-m%C3%B3dulo-reporte-facturaci%C3%B3n/</link><description><![CDATA[
<p>
	Módulo para Reporte de Facturación.
</p>

<p>
	Compatibilidad versiones de Prestashop: 1.7.5, 1.7.6, 1.7.7
</p>

<p>
	Accesible desde <em>Inicio &gt; Estadísticas</em>
</p>

<p>
	Nueva versión que incluye librerías Datatables para mejora de paginación, búsqueda de registros y exportación en los formatos más utilizados.
</p>

<p>
	[ 06-05-2021 ] Añadida nueva versión que mejora la compatibilidad y funcionamiento
</p>

<p>
	 
</p>

<p>
	<img alt="spacer.png" class="ipsImage" data-ratio="75.08" height="593" style="height:auto;" width="1000" data-src="https://i.ibb.co/pQkPbjh/satsinvoice.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=272077" data-fileExt='zip' data-fileid='272077'>statsinvoicesreport.zip</a></p>]]></description><guid isPermaLink="false">1025028</guid><pubDate>Fri, 05 Jun 2020 16:11:17 +0000</pubDate></item><item><title>(SOLUCIONADO) al actualizar sale el formulario de contacto en el backend</title><link>https://forum.prestashop.com/topic/1089488-solucionado-al-actualizar-sale-el-formulario-de-contacto-en-el-backend/</link><description><![CDATA[<p>
	Buenas, he actualizado prestashop de 1.7.6 a 1.7.8.11 y al entrar al backend me sale el formulario del modulo contac_form, como podria quitarlo de ahi ya que ahi para que lo quiero.
</p>

<p>
	gracias y un saludo.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2024_08/backend.png.695a4880d0813845c463cda5e629c015.png" data-fileid="325861" data-fileext="png" rel=""><img alt="backend.png" class="ipsImage ipsImage_thumbnailed" data-fileid="325861" data-ratio="44.6" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2024_08/backend.thumb.png.ceffd3a261fe754b5cb39e905e666d2d.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>
]]></description><guid isPermaLink="false">1089488</guid><pubDate>Mon, 05 Aug 2024 16:25:36 +0000</pubDate></item><item><title>Checkout plantilla ClassicBlinder [SOLUCIONADO]</title><link>https://forum.prestashop.com/topic/1088642-checkout-plantilla-classicblinder-solucionado/</link><description><![CDATA[<p>
	Buenas, 
</p>

<p>
	Primero de todo, dar las gracias a la gente de este foro porque en muchas ocasiones he podido solventar problemillas con vuestra ayuda.<br />
	Pero esta vez no encuentro solución y me he animado a publicar mi problema por si le pasa a mas gente, espero haber puesto este tema donde corresponde... 
</p>

<p>
	Al tema, tengo instalada la plantilla ClassicBlinders y no se que pasa en el checkout que no salen las fotos de los productos y parece que eso está provocando que se mueva todo como dando saltitos y se hace difícil completar un pedido. 
</p>

<p>
	Pongo un enlace a mi web a ver si alguien me puede ayudar porque la gente de la plantilla no contesta desde hace casi un año...
</p>

<p>
	<a href="https://distribucionespardo.com/tienda/pedido" rel="external nofollow">https://distribucionespardo.com/tienda/pedido</a> 
</p>

<p>
	Saludos y gracias de antemano
</p>
]]></description><guid isPermaLink="false">1088642</guid><pubDate>Fri, 05 Jul 2024 10:37:05 +0000</pubDate></item><item><title>Problema m&#xF3;dulo Paypal</title><link>https://forum.prestashop.com/topic/1064603-problema-m%C3%B3dulo-paypal/</link><description><![CDATA[<p>
	Hola.
</p>

<p>
	Hemos instalado el módulo gratuito de Paypal en Prestashop 1.7.8.5
</p>

<p>
	Hemos sincronizado con la cuenta de Paypal y los requisitos están todos en verde en el módulo.
</p>

<p>
	Hemos vinculado el módulo a transportistas, pais, moneda (EUR). En Paypal solo existe la divisa EUR.
</p>

<p>
	Y cuando le damos a los botones de "Paypal pagar" como cliente aparece la ventana de Paypal 1 segundo y se cierra de golpe.
</p>

<p>
	Alguien podria ayudarnos??
</p>

<p>
	Gracias de antemano.
</p>

<p>
	Saludos.
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2022_05/65579886_2022-05-3113_19_08-Window.png.e9371eda9db7cdbdb34c0a38324a2188.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="290160" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_05/500503848_2022-05-3113_19_08-Window.thumb.png.826cc10f1032577481d5ed7b728ab4c1.png" data-ratio="55.2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2022-05-31 13_19_08-Window.png"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_05/91330107_2022-05-3113_19_27-Window.png.481ae5668129c8c7dfca01f57ca6eb6f.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="290161" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_05/496753390_2022-05-3113_19_27-Window.thumb.png.9331d6c91f20354803fad49a9892c1e0.png" data-ratio="60.9" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2022-05-31 13_19_27-Window.png"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_05/1848330993_2022-05-3113_19_54-Window.png.f367c37fd91c261d74479a108cea5f3e.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="290162" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_05/1869441669_2022-05-3113_19_54-Window.thumb.png.553e4701567ad27b7136bc53ac2bd02d.png" data-ratio="25.4" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2022-05-31 13_19_54-Window.png"></a></p>]]></description><guid isPermaLink="false">1064603</guid><pubDate>Tue, 31 May 2022 11:20:59 +0000</pubDate></item><item><title>Problemas en la ejecuc&#xF3;n del cron del m&#xF3;dulo de google sitemap</title><link>https://forum.prestashop.com/topic/1089174-problemas-en-la-ejecuc%C3%B3n-del-cron-del-m%C3%B3dulo-de-google-sitemap/</link><description><![CDATA[<p>
	Buenos días.
</p>

<p>
	Tenemos la siguiente problemática en la ejecución del cron del módulo de Google Sites map.
</p>

<p>
	Al ejecutar el cron manualmente o programado encontramos que nos da este error por plesk. Y si revisamos los registros del log de errores. 
</p>

<p>
	 <strong>AH01071: Got error 'PHP message: PHP Warning: Declaration of Tools::getPath($id_category, $path = '', $link_on_the_item = false, $category_type = 'products', ?Context $context = NULL) should be compatible with ToolsCore::getPath($url_base, $id_category, $path = '', $highlight = '', $category_type = 'catalog', $home = false) in /var/www/vhosts/boxley.eu/httpdocs/override/classes/Tools.php on line 97'</strong>
</p>

<p>
	Tenemos otras instalaciones de la v1.7 y no nos ha dado este problema.
</p>

<p>
	¿Alguien se ha encontrado con esta problemática?
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2024_07/Capturadepantalla2024-07-24ales12_07_31.png.714a34edfe468faa068ce9b9d5c25c60.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="325441" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2024_07/Capturadepantalla2024-07-24ales12_07_31.png.714a34edfe468faa068ce9b9d5c25c60.png" data-ratio="52.88" width="626" class="ipsImage ipsImage_thumbnailed" alt="Captura de pantalla 2024-07-24 a les 12.07.31.png"></a></p>]]></description><guid isPermaLink="false">1089174</guid><pubDate>Thu, 25 Jul 2024 08:29:38 +0000</pubDate></item><item><title>Modulo localizador instalado no se visualiza en la web</title><link>https://forum.prestashop.com/topic/1088979-modulo-localizador-instalado-no-se-visualiza-en-la-web/</link><description><![CDATA[<p>
	He instalado un modulo de localizador de tienda. Esta ya configurado y activado también agregué la API de google pero no se vizualiza en mi web. Intente todos los medios pero no encontré la forma
</p>
]]></description><guid isPermaLink="false">1088979</guid><pubDate>Thu, 18 Jul 2024 08:11:59 +0000</pubDate></item><item><title>Modulo 1 click upgrade no detecta que est&#xE1; en la ultima versi&#xF3;n</title><link>https://forum.prestashop.com/topic/1083800-modulo-1-click-upgrade-no-detecta-que-est%C3%A1-en-la-ultima-versi%C3%B3n/</link><description><![CDATA[<p>
	Hola!
</p>

<p>
	Estoy intentando actualizar un prestashop antiguo (1.6.1.15) a 1.7.8 mediante el modulo 1-click upgrade. El problema es que por algun motivo, aunque está en la ultima versión (4.14.2) en el listado incial, me marca como si no lo estuviera (cruz roja) y por lo tanto, no me deja actualizar el PS.
</p>

<p>
	He probado a reiniciarlo, desinstalarlo...pero nada, sigue siempre con la cruz roja. A alguien le ha pasado?
</p>

<p>
	Muchas gracias!
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2024_01/upgrade.jpg.07d897890f6173fc36e24e7df746d528.jpg" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="318866" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2024_01/upgrade.thumb.jpg.6bf50c3b50604227666a95f7d0b2ebb3.jpg" data-ratio="34.3" width="1000" class="ipsImage ipsImage_thumbnailed" alt="upgrade.jpg"></a></p>]]></description><guid isPermaLink="false">1083800</guid><pubDate>Fri, 19 Jan 2024 11:05:34 +0000</pubDate></item><item><title>Plantilla Correo cambiar campo {order_name}</title><link>https://forum.prestashop.com/topic/1087697-plantilla-correo-cambiar-campo-order_name/</link><description><![CDATA[<p>
	Buenos días,
</p>

<p>
	Estoy editando una plantilla de envío de email para Amazon, y me gustaría sustituir el campo "{order_name}" por el ID de pedido de Amazon si fuera posible. 
</p>

<p>
	Gracias, saludos
</p>
]]></description><guid isPermaLink="false">1087697</guid><pubDate>Wed, 29 May 2024 10:21:10 +0000</pubDate></item><item><title>PVP</title><link>https://forum.prestashop.com/topic/1087197-pvp/</link><description><![CDATA[<p>
	Hola a todos
</p>

<p>
	Utilizo prestashop como b2b para mis clientes y queria saber si existe algún modulo para poder ver los pvps cuando están en su cuenta
</p>

<p>
	Actualmente solo ven su precio de compra,
</p>

<p>
	Gracias,
</p>
]]></description><guid isPermaLink="false">1087197</guid><pubDate>Wed, 08 May 2024 17:05:31 +0000</pubDate></item><item><title>Diferenciar entre Peninsula y Canarias</title><link>https://forum.prestashop.com/topic/1084039-diferenciar-entre-peninsula-y-canarias/</link><description><![CDATA[<p>
	Buenas tardes.
</p>

<p>
	Queria preguntar si alguien sabe de algun modulo que cuando entres en la Web te salga el tipico pop-up para que puedas pichas y diferenciar entre Peninsula y Canarias, para poder asi cobrar el impuesto que toca ya sea IVA o IGIC.
</p>

<p>
	Un saludo y gracias.
</p>
]]></description><guid isPermaLink="false">1084039</guid><pubDate>Fri, 26 Jan 2024 13:43:11 +0000</pubDate></item><item><title>Modulo redsys y URLOK</title><link>https://forum.prestashop.com/topic/1086509-modulo-redsys-y-urlok/</link><description><![CDATA[<p>
	Hola, 
</p>

<p>
	tengo redsys como metodo de pago, no me funciona correctamente ya que no se que poner en la configuracion del modulo en URLOK. Ahora sin poner nada, me va a historial del pedido...
</p>

<p>
	Podeis orientarme a que debo colocar alli?
</p>

<p>
	 
</p>

<p>
	Muchas gracias
</p>
]]></description><guid isPermaLink="false">1086509</guid><pubDate>Fri, 12 Apr 2024 18:29:33 +0000</pubDate></item><item><title>Modulo para hacer una cotizaci&#xF3;n y reservar el producto.</title><link>https://forum.prestashop.com/topic/1086302-modulo-para-hacer-una-cotizaci%C3%B3n-y-reservar-el-producto/</link><description><![CDATA[<p>
	Necesito un modulo que al agregar los productos al carrito sea una forma de contacto para que me llegue los productos que estan solicitando, pero necesito que en ese mismo contacto tenga un apartado de reservar el producto, como un tipo calendario o algo para seleccionar la fecha que deseas el producto. Esto tendrá como función si un cliente quiere reservar un producto en una fecha X pero alguien mas lo aparto en esa misma fecha ya no lo deje reservarlo, excepto si hay aun stock del producto y no cruzen las cotizaciones.
</p>

<p>
	Y si es que se puede tener un calendario dentro del back office para ver las reservas de los clientes ya confirmadas.
</p>

<p>
	Encontré un modulo que hace lo primero. De hacer que los clientes coticen y me lleguen las cotizaciones pero no encuentro otro para lo del calendario.
</p>

<p>
	 
</p>

<p>
	Porfavor, espero sus opiniones. Gracias
</p>
]]></description><guid isPermaLink="false">1086302</guid><pubDate>Fri, 05 Apr 2024 06:06:15 +0000</pubDate></item><item><title>Retome contacto</title><link>https://forum.prestashop.com/topic/1086061-retome-contacto/</link><description><![CDATA[<p>
	Hola, alguien conoce un modulo similar al que antes venia nativo en prestashop "Retome contacto" o ps_reminder?
</p>
]]></description><guid isPermaLink="false">1086061</guid><pubDate>Wed, 27 Mar 2024 10:36:15 +0000</pubDate></item><item><title>Reglas de carrito por combinaciones afecta a todo el producto</title><link>https://forum.prestashop.com/topic/1085993-reglas-de-carrito-por-combinaciones-afecta-a-todo-el-producto/</link><description><![CDATA[<p>
	Buenos días,
</p>

<p>
	Voy a intentar explicarme lo mejor que se <img alt=":)" data-emoticon="" height="20" src="https://media.invisioncic.com/t336404/emoticons/default_smile.png" srcset="https://media.invisioncic.com/t336404/emoticons/smile@2x.png 2x" title=":)" width="20" /></p>

<p>
	Tengo una tienda con productos combinados con 3 atributos, colores, tallas y Cajas (unidades)<br />
	Por ejemplo, dos articulos X e Y estan disponibles en los colores blanco, gris y marino y en formatos de caja 1 unidad, caja 10 unidades y caja 50 unidades.<br />
	Mi objetivo es que cuando un cliente compre mas de 5 productos mezclados X e Y (o 5X o 5Y) siempre y cuando sean en formato de 1 unidad y de los colores gris y marino se aplique el descuento.
</p>

<p>
	Si en ese carro se añaden los articulos X o Y en otro formato o en otro color no debe de descontarse nada.
</p>

<p>
	Ejemplo de funcionamiento deseado en carrito:<br />
	Carrito 1:<br />
	3X gris 1ud -10%Dto<br />
	2Y marino 1 ud -10%dto<br />
	1X blanco 1ud -0%Dto<br />
	1Y gris 10ud -0%Dto
</p>

<p>
	Carrito 2:<br />
	2X gris 1ud -0%Dto<br />
	2Y marino 1 ud -0%dto<br />
	1X blanco 1ud -0%Dto<br />
	1Y gris 10ud -0%Dto
</p>

<p>
	Ejemplo del comportamiento que estoy obteniendo:<br />
	Carrito 1:<br />
	3X gris 1ud -10%Dto<br />
	2Y marino 1 ud -10%dto<br />
	1X blanco 1ud -10%Dto<br />
	1Y gris 10ud -10%Dto
</p>

<p>
	Carrito 2:<br />
	2X gris 1ud -0%Dto<br />
	2Y marino 1 ud -0%dto<br />
	1X blanco 1ud -0%Dto<br />
	1Y gris 10ud -0%Dto<br /><br />
	He probado en parametros de tienda a establecer "Descuentos por cantidad basados en combinaciones" sin ningún cambio aparente.
</p>

<p>
	¿Conocéis la forma de realizar este tipo de descuentos ya sea con Prestashop o con algún módulo?<br /><br />
	Gracias por vuestra ayuda.
</p>
]]></description><guid isPermaLink="false">1085993</guid><pubDate>Tue, 26 Mar 2024 08:08:11 +0000</pubDate></item><item><title>&#xBF;Hay alg&#xFA;n m&#xF3;dulo gratuito para optimizar la web en m&#xF3;viles?</title><link>https://forum.prestashop.com/topic/1085761-%C2%BFhay-alg%C3%BAn-m%C3%B3dulo-gratuito-para-optimizar-la-web-en-m%C3%B3viles/</link><description><![CDATA[<p>
	Buenos días. Actualmente uso el tema Warehouse en prestashop. Me gustaría saber si existe algún módulo para optimizar la web en dispositivos móvles (es decir, configurar y construir desde cero la web para los usuarios de móviles). Tengo la versión 1.7.8 de Prestashop. Gracias.
</p>
]]></description><guid isPermaLink="false">1085761</guid><pubDate>Mon, 18 Mar 2024 07:46:55 +0000</pubDate></item><item><title>M&#xF3;dulo Etiquetas de Texto en im&#xE1;genes productos</title><link>https://forum.prestashop.com/topic/1041379-m%C3%B3dulo-etiquetas-de-texto-en-im%C3%A1genes-productos/</link><description><![CDATA[
<p>
	Muy buenas.
</p>

<p>
	Me gustaría saber si existe algun módulo (de pago o gratuíto. Pero especialmente gratuíto) que permita poner etiquetas de texto (personalizadas) en las imágenes de los productos (dentro de la categoría o ficha producto). Me refiero a las típicas etiquetas tipo "Novedades", "Descuento", ... però que te permita poner el texto que tu quieras. (ver imágenes adjuntas).
</p>

<p>
	Espero vuentra ayuda.
</p>

<p>
	Muchas gracias y saludos.
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2021_01/1276599512_etiquetasprestashop.png.92d01f9518b93a5d5ac89c49c0513c68.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="264557" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2021_01/890618242_etiquetasprestashop.thumb.png.1ecdd163ceaa25d41af100690212958f.png" data-ratio="55.4" width="1000" class="ipsImage ipsImage_thumbnailed" alt="etiquetas prestashop.png"></a></p>]]></description><guid isPermaLink="false">1041379</guid><pubDate>Wed, 27 Jan 2021 11:54:11 +0000</pubDate></item><item><title>COMO DAR ESTILO AL ARBOL DE CATEGORIA?</title><link>https://forum.prestashop.com/topic/1085264-como-dar-estilo-al-arbol-de-categoria/</link><description><![CDATA[<p>
	Hola! Mi consulta es la siguiente:
</p>

<p>
	Tengo un sitio en prestashop  tema  warehouse. Ya he creado las categorias, y el menú principal (horizontal) con el modulo megamenu. Ahora quisiera darle un poco de estilo a los menús que aparecen en las paginas de cada categoría, pero no encuentro donde estan las opciones para darle color o cambiar tipografia. Adjunte una imagen con el menu que quiero modificar (el que esta a la izquierda). Saludos!
</p>

<p>
	 
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2024_03/foro_consulta.png.adb2dcb23f6d4227dc37ba240e4c1a0e.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="320735" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2024_03/foro_consulta.png.adb2dcb23f6d4227dc37ba240e4c1a0e.png" data-ratio="45.43" width="973" class="ipsImage ipsImage_thumbnailed" alt="foro_consulta.png"></a></p>]]></description><guid isPermaLink="false">1085264</guid><pubDate>Fri, 01 Mar 2024 17:56:47 +0000</pubDate></item><item><title><![CDATA[Error al insertar stock masivamente: Uncaught PrestaShopBundle\Exception\NotImplementedException: Shop context types other than &quot;single shop&quot; are not supported in]]></title><link>https://forum.prestashop.com/topic/1083650-error-al-insertar-stock-masivamente-uncaught-prestashopbundleexceptionnotimplementedexception-shop-context-types-other-than-quotsingle-shopquot-are-not-supported-in/</link><description><![CDATA[<p>
	Buenas,
</p>

<p>
	Estoy desarrollando un módulo que inserta de forma masiva el stock en los artículos y combinaciones así:
</p>

<p>
	StockAvailable::setQuantity($id_product, $attr_id,  $quantity);
</p>

<p>
	 
</p>

<p>
	El caso es que si debería de actualizar el stock de 5 combinaciones, cada vez que lo lanzo va actualizando el stock de una, por ejemplo, primero combinación 1, la segunda vez que lo lanzo combinación y combinación 2, etc, y me devuelve el siguiente error:
</p>

<p>
	&lt;b&gt;Fatal error&lt;/b&gt;: Uncaught PrestaShopBundle\Exception\NotImplementedException: Shop context types other than &amp;quot;single shop&amp;quot; are not supported in /var/www/vhosts/midominio.com/httpdocs/src/PrestaShopBundle/Entity/Repository/StockManagementRepository.php:142 Stack trace: #0 /var/www/vhosts/midominio.com/httpdocs/src/PrestaShopBundle/Entity/Repository/StockMovementRepository.php(58): PrestaShopBundle\Entity\Repository\StockManagementRepository-&amp;gt;__construct() #1 /var/www/vhosts/midominio.com/httpdocs/var/cache/dev/ContainerYdfx4xi/getPrestashop_Core_Api_StockMovement_RepositoryService.php(8): PrestaShopBundle\Entity\Repository\StockMovementRepository-&amp;gt;__construct() #2 /var/www/vhosts/midominio.com/httpdocs/var/cache/dev/ContainerYdfx4xi/appProdProjectContainer.php(3152): require('/var/www/vhosts...') #3 /var/www/vhosts/midominio.com/httpdocs/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php(304): ContainerYdfx4xi\appProdProjectContainer-&amp;gt;load() #4 /var/www/vhosts/midominio.com/httpdocs/src/Core/Stock/StockMan in &lt;b&gt;/var/www/vhosts/midominio.com/httpdocs/src/PrestaShopBundle/Entity/Repository/StockManagementRepository.php&lt;/b&gt; on line &lt;b&gt;142&lt;/b&gt;&lt;br /&gt;
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	A ver si alguien puede echarme una mano, gracias, un saludo.
</p>
]]></description><guid isPermaLink="false">1083650</guid><pubDate>Tue, 16 Jan 2024 10:00:28 +0000</pubDate></item><item><title>PASARELA DE PAGO PARA LA VERSION 8.0.2</title><link>https://forum.prestashop.com/topic/1084731-pasarela-de-pago-para-la-version-802/</link><description><![CDATA[<p>
	<font>Bienos días, estoy buscando un módulo de pasarela de pago con tarjeta que funcione con la versión 8.0.2, he estado mirando STRIPE pero no sé si funciona bien y he podido leer que la versión gratuita de REDSYS no función de hecho no mla puedo instalar, sabeis de alguna que sea gratuita y compatible que pueda usar para empezar?</font><br /><font>De momento tengo el proyecto en servidor local.</font>
</p>
]]></description><guid isPermaLink="false">1084731</guid><pubDate>Thu, 15 Feb 2024 09:20:00 +0000</pubDate></item><item><title>[SOLICITUD] Modulo formulario de contra entrega / contra reembolso</title><link>https://forum.prestashop.com/topic/1082339-solicitud-modulo-formulario-de-contra-entrega-contra-reembolso/</link><description><![CDATA[<p>
	Hola buenas tardes anduve buscando por todo internet pero no he encontrado el primer modulo así en PrestaShop en el caso de latinoamerica la contra entrega es bastante esencial, necesito un modulo que tenga una funcionalidad o igual a este de Shopify, basicamente es un formulario directo de checkout desde la ficha de producto para contra entrega el cual permite personalizar con ofertas.<br /><br /><a href="https://apps.shopify.com/releasit-cod-order-form?locale=es&amp;surface_detail=orders-and-shipping-delivery-and-pickups-cash-collect-on-delivery-cod&amp;surface_inter_position=1&amp;surface_intra_position=1&amp;surface_type=category&amp;surface_version=redesign" rel="external nofollow">https://apps.shopify.com/releasit-cod-order-form?locale=es&amp;surface_detail=orders-and-shipping-delivery-and-pickups-cash-collect-on-delivery-cod&amp;surface_inter_position=1&amp;surface_intra_position=1&amp;surface_type=category&amp;surface_version=redesign</a><br /><br />
	Si alguien sabe de algo asi parecido agradecería alguna información.<br /><br />
	 
</p>
]]></description><guid isPermaLink="false">1082339</guid><pubDate>Sat, 25 Nov 2023 03:50:11 +0000</pubDate></item><item><title>M&#xF3;dulo filtrado</title><link>https://forum.prestashop.com/topic/1079501-m%C3%B3dulo-filtrado/</link><description><![CDATA[<p>
	Buenos días,
</p>

<p>
	En mi tienda online trabajamos el sistema de filtrado con el filtro por defecto de Prestashop, y se nos está quedando bastante corto. ¿Conocéis algún modulo para mejorarlo?
</p>

<p>
	 
</p>

<p>
	Gracias de antemano,
</p>

<p>
	Alba
</p>
]]></description><guid isPermaLink="false">1079501</guid><pubDate>Fri, 25 Aug 2023 08:10:25 +0000</pubDate></item><item><title>Busco M&#xF3;dulo para Pop ups</title><link>https://forum.prestashop.com/topic/1080423-busco-m%C3%B3dulo-para-pop-ups/</link><description><![CDATA[<p>
	Hola! lo dicho, busco recomendaciones para módulo de pop ups (ventanas emergentes) y que pueda configurar tanto las condiciones como el estilo del mismo:
</p>

<p>
	Por ejemplo poner estos popups y que sean compatibles y se adapten bien a la web, pudiendo incrustar dentro HTML y más contenido:<br />
	- Un popup grande cuadrado al entrar a la web que pueda añadir imagen etc<br />
	- Otro popup que se active al llevar más de 1min. navegando por la web.<br />
	- Posibilidad de que algún popup solo funcione en una/s URL/s concretas.
</p>

<p>
	¿Conocéis alguno así? ¡Gracias!
</p>
]]></description><guid isPermaLink="false">1080423</guid><pubDate>Mon, 25 Sep 2023 14:02:04 +0000</pubDate></item><item><title>Modulo descargar ficha de producto en PDF</title><link>https://forum.prestashop.com/topic/1083211-modulo-descargar-ficha-de-producto-en-pdf/</link><description><![CDATA[<p>
	Buenos días, necesitaría un módulo para que el cliente pueda descargar la página del producto, con fotos, descripciones, precio... en formato pdf y que quede decente, ya que la opción de imprimir página, con la configuración de mi Prestashop, queda muy desordenado todo.
</p>

<p>
	Muchas gracias de antemano.
</p>

<p>
	Un saludo.
</p>
]]></description><guid isPermaLink="false">1083211</guid><pubDate>Thu, 28 Dec 2023 12:47:04 +0000</pubDate></item><item><title>inicio de sesi&#xF3;n , login con google o facebook</title><link>https://forum.prestashop.com/topic/1081677-inicio-de-sesi%C3%B3n-login-con-google-o-facebook/</link><description><![CDATA[<p>
	Hola , conocen un modulo de social login , para iniciar con cuenta de google ?
</p>

<p>
	Gracias
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1081677</guid><pubDate>Sat, 04 Nov 2023 01:14:41 +0000</pubDate></item><item><title>Insertar modulo en category-header</title><link>https://forum.prestashop.com/topic/1081611-insertar-modulo-en-category-header/</link><description><![CDATA[<p>
	He hecho un modulo para presentar unos datos y quiero ponerlos en category-header.tpl.
</p>

<p>
	No encuentro como asignar ese modulo a un hook de esa plantilla.
</p>

<p>
	 
</p>

<p>
	Alguien me puede indicar como puedo hacerlo?
</p>

<p>
	 
</p>

<p>
	Gracias.
</p>

<p>
	 
</p>

<p>
	Mario
</p>
]]></description><guid isPermaLink="false">1081611</guid><pubDate>Thu, 02 Nov 2023 15:01:17 +0000</pubDate></item><item><title>Alguien me puede decir que plantilla es la de esta tienda</title><link>https://forum.prestashop.com/topic/1079814-alguien-me-puede-decir-que-plantilla-es-la-de-esta-tienda/</link><description><![CDATA[<p>
	Alguien me puede decir que plantilla utiliza esta tienda <a href="https://todoelectrico.es" rel="external nofollow">https://todoelectrico.es</a> me suena a algo de Leo Themes con scroll infinito. Además si alguien me puede ayudar y decir que versión de prestashop se está utilizando en la tienda. Gracias.<span> </span>
</p>
]]></description><guid isPermaLink="false">1079814</guid><pubDate>Mon, 04 Sep 2023 15:48:14 +0000</pubDate></item><item><title>M&#xF3;dulo Gratuito para exportar productos PS 8.x</title><link>https://forum.prestashop.com/topic/1079599-m%C3%B3dulo-gratuito-para-exportar-productos-ps-8x/</link><description><![CDATA[<p>
	Hola,
</p>

<p>
	¿Conocen algún módulo gratuito para exportar los productos por ejemplo a excel o html? Para pdf no he encontrado ninguno gratuito. Para html encontré uno compatible pero auqnue no me dió error no me generaba el informe.
</p>

<p>
	 
</p>

<p>
	Saludos
</p>
]]></description><guid isPermaLink="false">1079599</guid><pubDate>Mon, 28 Aug 2023 19:19:52 +0000</pubDate></item><item><title>Borrar registros de traducci&#xF3;n de la tabla ps_translation posterior a la desinstalaci&#xF3;n del m&#xF3;dulo</title><link>https://forum.prestashop.com/topic/1079592-borrar-registros-de-traducci%C3%B3n-de-la-tabla-ps_translation-posterior-a-la-desinstalaci%C3%B3n-del-m%C3%B3dulo/</link><description><![CDATA[<p>
	¿Cuál es la manera más adecuada para borrar los registros de la tabla ps_translation, luego de realizar la desinstalación del módulo?<br /><a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="313582" href="//media.invisioncic.com/t336404/monthly_2023_08/Capturadepantalla2023-08-28103734.png.8c741d5d483d83b45da6f9873d24053a.png" rel=""><img alt="Capturadepantalla2023-08-28103734.thumb.png.60971cfb2e197da5fc8259b8613d33df.png" class="ipsImage ipsImage_thumbnailed" data-fileid="313582" data-ratio="56.30" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2023_08/Capturadepantalla2023-08-28103734.thumb.png.60971cfb2e197da5fc8259b8613d33df.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	Realizo manualmente el select a la tabla ps_translation, para luego a través de foreach, recorrer registro por registro y borrar todos los registros que correspondan al módulo que se está desinstalando?
</p>
]]></description><guid isPermaLink="false">1079592</guid><pubDate>Mon, 28 Aug 2023 15:41:23 +0000</pubDate></item><item><title>Problemas M&#xF3;dulo Paypal by Prestashop [RESUELTO]</title><link>https://forum.prestashop.com/topic/1079386-problemas-m%C3%B3dulo-paypal-by-prestashop-resuelto/</link><description><![CDATA[<p>
	Buenos días,
</p>

<p>
	Tengo la versión de Prestashop 1.7.8.9 y la versión del módulo Paypal by Prestashop actualizada a la 5.1.2.
</p>

<p>
	Desde hace unos días nos hemos dado cuenta que tenemos error con los pagos con Paypal. Hemos visto que cuando vas a hacer la compra siempre te hace un redondeo hacia arriba o hacia abajo.
</p>

<p>
	Hemos estado mirando por internet y hemos visto que esto es "normal" (porque cada plataforma lo calcula a su manera), pero el problema lo tenemos que Prestashop envía un correo al cliente que el pago no se ha realizado correctamente (aunque nosotros si que lo tengamos en nuestra cuenta) porque el importe no coincide.
</p>

<p>
	Hemos visto que si son 0,10€ de diferencia, si que acepta el pago; pero que si la diferencia es de más ya no lo acepta. 
</p>

<p>
	Ejemplo de error:
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="313335" href="//media.invisioncic.com/t336404/monthly_2023_08/image.png.a8b17be3751246a2369fd36200e978b1.png" rel=""><img alt="image.thumb.png.40ba3f27503f98c16f227eabd0633f99.png" class="ipsImage ipsImage_thumbnailed" data-fileid="313335" data-ratio="43.30" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2023_08/image.thumb.png.40ba3f27503f98c16f227eabd0633f99.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	 
</p>

<p>
	Ejemplo de correcto: 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="313336" href="//media.invisioncic.com/t336404/monthly_2023_08/image.png.6f1b3c506f16d724d183cacaff8034ee.png" rel=""><img alt="image.thumb.png.e30986aabd4dc74c0200f4b0e891f84c.png" class="ipsImage ipsImage_thumbnailed" data-fileid="313336" data-ratio="46.10" style="height:auto;" width="1000" data-src="//media.invisioncic.com/t336404/monthly_2023_08/image.thumb.png.e30986aabd4dc74c0200f4b0e891f84c.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	 
</p>

<p>
	He estado buscando información por Internet pero las soluciones que encuentro son comprar otro módulo o otros antiguos que no me funcionan. Alguna información nueva? Alguien esta en la misma situación?
</p>

<p>
	Muchas gracias por vuestra ayuda. 
</p>
]]></description><guid isPermaLink="false">1079386</guid><pubDate>Tue, 22 Aug 2023 06:20:09 +0000</pubDate></item><item><title>Dll para conexion con api prestashop 1.8</title><link>https://forum.prestashop.com/topic/1078925-dll-para-conexion-con-api-prestashop-18/</link><description><![CDATA[<p>
	Hasta ahora con la version 1.7 utilizabamos una dll de BUKIMEDIA, que ahora con la version 1.8 da fallos al crear aticulos etc, sabe alguien de alguna dll que funcione para esta nueva version.
</p>

<p>
	 
</p>

<p>
	Gracias
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1078925</guid><pubDate>Wed, 02 Aug 2023 17:30:40 +0000</pubDate></item><item><title>Qu&#xE9; plantilla me recomendais para PS 8.0</title><link>https://forum.prestashop.com/topic/1078828-qu%C3%A9-plantilla-me-recomendais-para-ps-80/</link><description><![CDATA[<p>
	Buenas, qué plantilla me recomendais para el diseño de mi nueva tienda online en ps 8.0??? Gracias
</p>
]]></description><guid isPermaLink="false">1078828</guid><pubDate>Mon, 31 Jul 2023 08:30:32 +0000</pubDate></item><item><title>Plantilla ClassicBlinders en modo MultiStore</title><link>https://forum.prestashop.com/topic/1077784-plantilla-classicblinders-en-modo-multistore/</link><description><![CDATA[<p>
	Hola,
</p>

<p>
	Estoy usando la plantilla ClassicBlinders y el sitio va muy bien en cuanto a rendimiento y tiene un SEO muy bueno de 100 en los test.
</p>

<p>
	Pero ahora necesito usar el modo MultiStore. He probado con el mismo tema para las dos tiendas pero si cambio el css cambia en las dos. Habrá alguna manera de de hacer por separado? ¿O tengo que buscar un tema de sea multistore?
</p>

<p>
	 
</p>

<p>
	Saludos
</p>
]]></description><guid isPermaLink="false">1077784</guid><pubDate>Fri, 23 Jun 2023 19:13:27 +0000</pubDate></item><item><title><![CDATA[Facebook& Instagram módulo PrestaShop Account es necesario para continuar con la configuración]]></title><link>https://forum.prestashop.com/topic/1078161-facebook-instagram-m%C3%B3dulo-prestashop-account-es-necesario-para-continuar-con-la-configuraci%C3%B3n/</link><description><![CDATA[<p>
	Buenas tardes a todos/as.
</p>

<p>
	Estoy intentado instalar el modulo para el pixel de meta Facebook &amp; Instagram y me sale este mensaje.
</p>

<p>
	"Instala el módulo PrestaShop Account
</p>

<p>
	El módulo PrestaShop Account es necesario para continuar con la configuración de este módulo"
</p>

<p>
	Le doy a instalar pero no hace nada, me descarge el modulo gratis de Customer accounts pero nada sigue saliendo el mensaje.
</p>

<p>
	Alguien sabe como solucionarlo.
</p>

<p>
	Adjunto pantallazos.<img class="ipsImage ipsImage_thumbnailed" data-fileid="311752" data-ratio="11.94" width="997" alt="2023-07-07_123903.jpg.72b2943bb4139dbe112a2ef23fed101e.jpg" data-src="//media.invisioncic.com/t336404/monthly_2023_07/2023-07-07_123903.jpg.72b2943bb4139dbe112a2ef23fed101e.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /><a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2023_07/2023-07-07_122741.jpg.e978a10804fdfdcd47a54d81ddfbf81e.jpg" data-fileid="311751" data-fileext="jpg" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="311751" data-ratio="40.90" width="1000" alt="2023-07-07_122741.thumb.jpg.e423a86955e23d8b14e7ecd70e0345ee.jpg" data-src="//media.invisioncic.com/t336404/monthly_2023_07/2023-07-07_122741.thumb.jpg.e423a86955e23d8b14e7ecd70e0345ee.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	Un saludo y gracias.
</p>
]]></description><guid isPermaLink="false">1078161</guid><pubDate>Fri, 07 Jul 2023 11:40:14 +0000</pubDate></item><item><title>Requerimientos para el m&#xF3;dulo gratis de migraci&#xF3;n de PrestaHero</title><link>https://forum.prestashop.com/topic/1078204-requerimientos-para-el-m%C3%B3dulo-gratis-de-migraci%C3%B3n-de-prestahero/</link><description><![CDATA[<p>
	¿Alguien ha usado ese módulo?
</p>

<p>
	Me consume todos los recursos del sitio nada más darle a clic usando la opción del conector. Nunca me llega a aparecer el segundo paso. Tengo 512Mb de memoria en el servidor, esta semana espero aumentarlo a 1Gb pero así es imposible migrar nada. Es mucho más rápido hacerlo con phpmyadmin que así.
</p>

<p>
	Aumenté esto a 3000 pero ni aún así max_execution_time = 3000
</p>
]]></description><guid isPermaLink="false">1078204</guid><pubDate>Sun, 09 Jul 2023 23:13:24 +0000</pubDate></item><item><title>M&#xF3;dulo Bloque de Novedades</title><link>https://forum.prestashop.com/topic/1020798-m%C3%B3dulo-bloque-de-novedades/</link><description><![CDATA[
<p>
	Buenas tardes.
</p>

<p>
	He activado el módulo<strong> Bloque de Novedades</strong> en la home, se supone que debería ser un carrusel de productos hacia la derecha.
</p>

<p>
	Y no es así, me aparecen los productos gigantes, uno por fila y columna, pixelados, hacia abajo como si en escritorio estuviera viendo la versión móvil.
</p>

<p>
	He mirado en la configuración y solo aparece lo que se ve en la imagen que adjunto.
</p>

<p>
	Agradecería si me echáis una mano.
</p>

<p>
	Prestashop versión 1.7.6.4.
</p>

<p>
	Un saludo <span>:)</span>
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2020_04/143477538_Anotacin2020-04-21211617.png.df6bb9aaa7760a058142d88aeb8ee825.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="242362" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2020_04/1506430170_Anotacin2020-04-21211617.thumb.png.6fdb11a18ade17aca1ac39545b96f452.png" data-ratio="35.6" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Anotación 2020-04-21 211617.png"></a></p>]]></description><guid isPermaLink="false">1020798</guid><pubDate>Tue, 21 Apr 2020 19:17:51 +0000</pubDate></item><item><title>M&#xF3;dulo gratis - PUNTOS DE FIDELIDAD</title><link>https://forum.prestashop.com/topic/1078160-m%C3%B3dulo-gratis-puntos-de-fidelidad/</link><description><![CDATA[<p>
	Buscando por la web módulos gratis me encontré con éste y, buscando en el foro, creo que nadie lo ha publicado y puede servir de ayuda y gustarle a alguien más que a mí.
</p>

<p>
	Así que por aquí os lo dejo. 
</p>

<p>
	Compatible con 1.7.x y 8.x
</p>

<p>
	Versión del módulo: 3.0.9
</p>

<p>
	<span class="ipsEmoji">?</span><span class="ipsEmoji">?</span>
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=311750&amp;key=46dcf5ff20c7d47996f3baa3762f5de8" data-fileExt='zip' data-fileid='311750' data-filekey='46dcf5ff20c7d47996f3baa3762f5de8'>myprestaloyalty.zip</a></p>]]></description><guid isPermaLink="false">1078160</guid><pubDate>Fri, 07 Jul 2023 11:35:08 +0000</pubDate></item><item><title>[MODULO CATEGORIAS MEN&#xDA; PRINCIPAL] &#xBF;Existe alguno gratuito?</title><link>https://forum.prestashop.com/topic/1040069-modulo-categorias-men%C3%BA-principal-%C2%BFexiste-alguno-gratuito/</link><description><![CDATA[
<p>
	Buenas tardes.
</p>

<p>
	Me gustaría saber si existe un módulo sin coste donde puedo tener 6-8 categorías con imagen cada una.
</p>

<p>
	He buscado bastante pero no hay manera de encontrarlo.
</p>

<p>
	PS 1.7.7 - Classic theme
</p>

<p>
	 
</p>

<p>
	Muchas gracias
</p>

<p>
	 
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2021_01/1025724237_Capturadepantalla2021-01-11alas17_50_41.png.e810de01e3567cdefb1842f64e511132.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="262883" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2021_01/1025724237_Capturadepantalla2021-01-11alas17_50_41.png.e810de01e3567cdefb1842f64e511132.png" data-ratio="42.01" width="607" class="ipsImage ipsImage_thumbnailed" alt="Captura de pantalla 2021-01-11 a las 17.50.41.png"></a></p>]]></description><guid isPermaLink="false">1040069</guid><pubDate>Mon, 11 Jan 2021 16:52:56 +0000</pubDate></item><item><title>Mostrar enlace de seguimiento GLS en detalles del pedido</title><link>https://forum.prestashop.com/topic/1076632-mostrar-enlace-de-seguimiento-gls-en-detalles-del-pedido/</link><description><![CDATA[<p>
	Hola,
</p>

<p>
	he visto algunos hilos tratando de solucionar este problema ya que la url de seguimiento de GLS incluye al final el código postal de destino. Esto hace que no funcione correctamente la url de seguimiento que se indica al configurar el transportista.
</p>

<p>
	Cuando el cliente accede a los detalles de su pedido, no se muestra un enlace directo al seguimiento de su envío.
</p>

<p>
	He conseguido solucionarlo modificando estos dos ficheros:
</p>

<p>
	OderDetailController.php
</p>

<p>
	order-detail.tpl
</p>

<p>
	En OderDetailController.php, sobre la línea 165, localizar este código:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">if (!$id_order) {
            $this-&gt;redirect_after = '404';
            $this-&gt;redirect();
        } else {
            if (Tools::getIsset('errorQuantity')) {</span></pre>

<p>
	Y lo cambiáis por este, que añade la consulta sql en la tabla de GLS:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">if (!$id_order) {
            $this-&gt;redirect_after = '404';
            $this-&gt;redirect();
        } else {
			// Empieza consulta SQL
        $sql = new DbQuery();
        $sql-&gt;select('url_track');
        $sql-&gt;from('gls_envios');
        $sql-&gt;where('id_envio_order = '. (int) $id_order);
        $result = Db::getInstance()-&gt;getValue($sql);

        $this-&gt;context-&gt;smarty-&gt;assign('url_track', $result);
        // Acaba consulta SQL
            if (Tools::getIsset('errorQuantity')) {</span></pre>

<p>
	En order-detail.tpl, sobre la línea 98, localizar este código:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"order-infos2"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"box"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;ul&gt;</span><span class="pln">
      </span><span class="tag">&lt;li&gt;&lt;strong&gt;</span><span class="pln">{l s='Carrier' d='Shop.Theme.Checkout'}</span><span class="tag">&lt;/strong&gt;</span><span class="pln"> {$order.carrier.name}		
		</span><span class="tag">&lt;/li&gt;</span></pre>

<p>
	Y cambiarlo por este:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">{* //////////////////////////////////////////////////// Acceder a la variable url_track en Smarty y mostrarla como un enlace *}	 
	 {if isset($url_track) &amp;&amp; $url_track}
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"block"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;h3&gt;</span><span class="pln">{l s='Puedes acceder a la información de seguimiento en el siguiente enlace:' d='Shop.Theme.Customeraccount'}</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$url_track}"</span><span class="pln"> </span><span class="atn">target</span><span class="pun">=</span><span class="atv">"_blank"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">
            {l s='Haz clic aquí para consultar el seguimiento de tu envío con GLS' d='Shop.Theme.Customeraccount'}
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
{/if}
	 
	 {if $order.follow_up &amp;&amp; !isset($url_track)}
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"box"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">{l s='Click the following link to track the delivery of your order' d='Shop.Theme.Customeraccount'}</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$order.follow_up}"</span><span class="tag">&gt;</span><span class="pln">{$order.follow_up}</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
{/if}
{* //////////////////////////////////////////////////// FIN DE: Acceder a la variable url_track en Smarty y mostrarla como un enlace *}</span></pre>

<p>
	Esto inserta un botón que va directo a la página de seguimiento del envío en GLS. Además, también oculta el follow_up normal cuando existe la url de gls. Si no existe la url de gls (por ejemplo para otros transportistas), no se muestra el botón de GLS, y sí se muestra el Follow_up normal de prestashop, con la url del transportista.
</p>

<p>
	Como mi código ya incluye el follow_up normal de prestashop, debes buscar este código un poco más abajo y eliminarlo para que no salga dos veces cuando no hay url de GLS:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">{if $order.follow_up &amp;&amp; !isset($url_track)}
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"box"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">{l s='Click the following link to track the delivery of your order' d='Shop.Theme.Customeraccount'}</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"{$order.follow_up}"</span><span class="tag">&gt;</span><span class="pln">{$order.follow_up}</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
{/if}</span></pre>

<p>
	A mi me va a la perfección, salut!
</p>
]]></description><guid isPermaLink="false">1076632</guid><pubDate>Fri, 12 May 2023 13:12:28 +0000</pubDate></item><item><title>Eliminar campos del checkout -  Template Classic - Versi&#xF3;n 8.0.1</title><link>https://forum.prestashop.com/topic/1076332-eliminar-campos-del-checkout-template-classic-versi%C3%B3n-801/</link><description><![CDATA[<p>
	Hola:
</p>

<p>
	Estoy buscando la forma de eliminar algunos de los campos que por defecto vienen en el checkout del tema Classic de Prestashop. 
</p>

<p>
	No puedo hacerlo desde el back, lo he intentado pero no hay opciones. Estoy intentando hacerlo desde el codigo moficando ficheros con Filizilla pero no encuentro el fichero en el que vienen los textos y campos a borrar o modificar, ¿me podéis echar una mano?
</p>

<p>
	Adjunto capturas de lo que necesito borrar
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2023_05/captura1.png.6f41799ca11601a08e1dc963f8776280.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="309193" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_05/captura1.thumb.png.867eb4dc7b14c54d8295acfc35b7103f.png" data-ratio="136.86" width="548" class="ipsImage ipsImage_thumbnailed" alt="captura1.png"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2023_05/captura2.png.e2e9fb6c1ff64d494e457a5bc41e8566.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="309194" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_05/captura2.thumb.png.4eed1228e452066238e5c109bec5c500.png" data-ratio="80.47" width="932" class="ipsImage ipsImage_thumbnailed" alt="captura2.png"></a></p>]]></description><guid isPermaLink="false">1076332</guid><pubDate>Tue, 02 May 2023 18:35:36 +0000</pubDate></item><item><title>Duda con Modulo de Promociones Especiales</title><link>https://forum.prestashop.com/topic/1076209-duda-con-modulo-de-promociones-especiales/</link><description><![CDATA[<p>
	Muy buenas,
</p>

<p>
	 
</p>

<p>
	Me preguntaba si es posible cambiar el orden en que aparecen los productos en el bloque de Promociones Especiales. Actualmente están ordenados por precio de mayor a menor, pero me gustaría que estuvieran de manera aleatoria.
</p>

<p>
	He intentando modificar el código en ps_specials.php pero no he logrado hacer que funcione.
</p>

<p>
	Cualquier ayuda sería bienvenida,
</p>

<p>
	 
</p>

<p>
	Saludos!
</p>

<p>
	 
</p>

<p>
	Maxi
</p>
]]></description><guid isPermaLink="false">1076209</guid><pubDate>Fri, 28 Apr 2023 01:14:37 +0000</pubDate></item><item><title>Error en Pasarela de Pago por Transferencia Bancaria..!</title><link>https://forum.prestashop.com/topic/1076308-error-en-pasarela-de-pago-por-transferencia-bancaria/</link><description><![CDATA[<p>
	Buenas,tengo una tienda en prestashop 1.7.8.8 la cual me arroja un Error 500 en el Modulo de transferencia Bancaria, cuando el comprador va a realizar un pago elije entre transferencia bancaria o WebPay, cuando elijes WebPay todo sale bien... pero cuando elijes Transferencia Bancaria arroja un Error 500, no se is a alguien le a pasado!! la web es <a href="https://holygeek.cl/" rel="external nofollow">https://holygeek.cl/</a>  
</p>

<p>
	Ojo, Ya intente desinstalarlo y volver a instalarlo, y restaurarlo.. y NADA.. el error persiste..!! necesito que me ayuden a solucionar.!!
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2023_05/1610576061_PrestaShop1.7.8.8.png.d78009427d8747c29c161fc8fcb338cc.png" data-fileid="309155" data-fileext="png" rel=""><img alt="PrestaShop 1.7.8.8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="309155" data-ratio="53.5" style="height:auto;" width="1000" data-src="https://forum.prestashop.com/uploads/monthly_2023_05/990491475_PrestaShop1.7.8.8.thumb.png.7d125e8fb56cdc2f437fece2d2a6a5d4.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>
]]></description><guid isPermaLink="false">1076308</guid><pubDate>Tue, 02 May 2023 04:49:34 +0000</pubDate></item><item><title>Modulo para corregir vulneraciones cwe79 y cwe89 Gratuito.</title><link>https://forum.prestashop.com/topic/1076297-modulo-para-corregir-vulneraciones-cwe79-y-cwe89-gratuito/</link><description><![CDATA[<p>
	Sencillo módulo que parchea las nuevas vulnerabilidades cwe79 y cwe89.
</p>

<p>
	El proceso de instalación es el habitual.
</p>

<p>
	Fuente para futuros FIX: <a href="https://github.com/dnkhack/fixcwe79cwe89" rel="external nofollow">https://github.com/dnkhack/fixcwe79cwe89</a>
</p>

<p>
	Saludos.
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=309131&amp;key=a4fee2695e762d5978166d5a9516e856" data-fileExt='zip' data-fileid='309131' data-filekey='a4fee2695e762d5978166d5a9516e856'>fixcwe79cwe89-v1.0.0.zip</a></p>]]></description><guid isPermaLink="false">1076297</guid><pubDate>Mon, 01 May 2023 13:54:32 +0000</pubDate></item><item><title>Modulo Whatsapp Chat no funciona</title><link>https://forum.prestashop.com/topic/1073048-modulo-whatsapp-chat-no-funciona/</link><description><![CDATA[<p>
	He instalado el módulo de Whatsapp Chat de Conexiaweb y lo configuro y aparece el símbolo en la página pero cuando pinchas se queda en blanco la web, con lo cual no funciona. ¿Alguien puede echarme una mano con esto?
</p>

<p>
	Gracias por adelantado.
</p>
]]></description><guid isPermaLink="false">1073048</guid><pubDate>Fri, 27 Jan 2023 19:47:06 +0000</pubDate></item><item><title>Algun modulo para chequear las conversiones o ventas por ads?</title><link>https://forum.prestashop.com/topic/1074539-algun-modulo-para-chequear-las-conversiones-o-ventas-por-ads/</link><description><![CDATA[<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Buenos días, existe algun modulo para poder ver y chequear aquellas ventas que provengan de anuncios de google ads o shopping? Gracias</font></font>
</p>
]]></description><guid isPermaLink="false">1074539</guid><pubDate>Thu, 09 Mar 2023 11:15:54 +0000</pubDate></item><item><title>WishList module fail  / Modulo WishtList  no funciona</title><link>https://forum.prestashop.com/topic/1073772-wishlist-module-fail-modulo-wishtlist-no-funciona/</link><description><![CDATA[<p>
	Buenas tardes.. he instalado el modulo WishList gratuito que viene en Prestashop Addons, pero no me funciona.. me muestra el icono en el producto pero no hace absolutamente nada.. ¿Podeis ayudarme?
</p>

<p>
	Gracias!!!
</p>

<p>
	<a href="https://addons.prestashop.com/es/undownloadable/9131-wishlist-block.html" rel="external nofollow">https://addons.prestashop.com/es/undownloadable/9131-wishlist-block.html</a>
</p>

<p>
	Hi! I installed WishList free module from Addons Prestashop but doesn't work.. show the icon but nothing happend.. Can you help Me????
</p>

<p>
	Thanks!!!
</p>

<p>
	<a href="https://addons.prestashop.com/es/undownloadable/9131-wishlist-block.html" rel="external nofollow">https://addons.prestashop.com/es/undownloadable/9131-wishlist-block.html</a>
</p>
]]></description><guid isPermaLink="false">1073772</guid><pubDate>Wed, 15 Feb 2023 14:30:50 +0000</pubDate></item><item><title>Alg&#xFA;n m&#xF3;dulo para el Feed GMCenter?</title><link>https://forum.prestashop.com/topic/1074493-alg%C3%BAn-m%C3%B3dulo-para-el-feed-gmcenter/</link><description><![CDATA[<p>
	Buenos días, sabéis de algún módulo gratuito para crear de forma fiel y efectiva el feed para conectar Google Merchan Center? Gracias 
</p>
]]></description><guid isPermaLink="false">1074493</guid><pubDate>Wed, 08 Mar 2023 11:06:32 +0000</pubDate></item><item><title>Alg&#xFA;n modulo gratis para Data Studio??</title><link>https://forum.prestashop.com/topic/1074322-alg%C3%BAn-modulo-gratis-para-data-studio/</link><description><![CDATA[<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Buenas tardes, conocen algún módulo gratuito para sincronizar Google Data Studio a mi PS 1.6??? Gracias</font></font>
</p>
]]></description><guid isPermaLink="false">1074322</guid><pubDate>Fri, 03 Mar 2023 11:28:13 +0000</pubDate></item><item><title>Recuperar modulo desinstalado</title><link>https://forum.prestashop.com/topic/1073621-recuperar-modulo-desinstalado/</link><description><![CDATA[<p>
	Alguien puede ayudar? Como recuperar un modulo desinstalado? Es modulo que se llama Bloque de texto personalizado
</p>

<p>
	Estoy buscando en los modulos y no puedo encontrarlo.Hay que descargar y instalar de nuevo?
</p>
]]></description><guid isPermaLink="false">1073621</guid><pubDate>Sun, 12 Feb 2023 09:41:41 +0000</pubDate></item><item><title>Modulo men&#xFA; movil</title><link>https://forum.prestashop.com/topic/1073380-modulo-men%C3%BA-movil/</link><description><![CDATA[<p>
	Buenos dias
</p>

<p>
	Actualmente trabajo con iqitmegamenu pero para movil no me termina, no me gusta que salgan desplegables, quiero un menu que cuando pinches en una categoria se abra otra pantalla con subcategorias, no se como se llamaria este tipo de menu, la verdad
</p>

<p>
	Algo parecido al que sale en las fotos, que es de mifarma/atida
</p>

<p>
	Gracias
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2023_02/c.JPG.45dc4135c348698d3c44d6e99a347e77.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="304508" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_02/c.thumb.JPG.d452fb6f7fed099b1ba1c46395c2ff63.JPG" data-ratio="307.38" width="244" class="ipsImage ipsImage_thumbnailed" alt="c.JPG"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2023_02/b.JPG.54400ef47b68b1c6f91164d17c889f78.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="304507" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_02/b.thumb.JPG.3e80cd4da83a596ac59d9dc4748f4ae2.JPG" data-ratio="302.42" width="248" class="ipsImage ipsImage_thumbnailed" alt="b.JPG"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2023_02/a.JPG.53d2ffd0db822fe96ec92f127c9eee62.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="304506" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_02/a.thumb.JPG.c7cb953941355143f4aef0a6dddf84f1.JPG" data-ratio="304.88" width="246" class="ipsImage ipsImage_thumbnailed" alt="a.JPG"></a></p>]]></description><guid isPermaLink="false">1073380</guid><pubDate>Mon, 06 Feb 2023 08:10:38 +0000</pubDate></item><item><title>M&#xF3;dulo tarjeta regalo gratuito</title><link>https://forum.prestashop.com/topic/1018960-m%C3%B3dulo-tarjeta-regalo-gratuito/</link><description><![CDATA[
<p>
	Hola a todos!!
</p>

<p>
	Es mi primer post!
</p>

<p>
	Desde hace semanas estoy buscando un módulo para que los clientes puedan comprar una tarjeta regalo, pero no encuentro uno que sea gratuito. He tenido malas experiencias comprando módulos que te gastas un dinero (y no funciona) y luego resulta que he encontrado la opción gratis que funciona.
</p>

<p>
	En caso de que no haya, estaría dispuesta a pagar no más de 50€.
</p>

<p>
	Espero vuestras recomendaciones.
</p>

<p>
	 
</p>

<p>
	Muchas Gracias!!
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1018960</guid><pubDate>Fri, 03 Apr 2020 08:57:10 +0000</pubDate></item><item><title>fidelizaci&#xF3;n con puntos</title><link>https://forum.prestashop.com/topic/1036008-fidelizaci%C3%B3n-con-puntos/</link><description><![CDATA[
<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Hola buenos dias , tengo una duda , quiero instalar un módulo en mi tienda online para la fidelización por puntos para mis clientes , estoy leyendo varios post que tratan de un módulo llamado LOYALTY , que al parecer antiguamente venía pre instalado como módulo pero ahora parece que no.</font></font>
</p>

<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Pues bien , podéis recomendarme un modulo para la fidelización con puntos para prestashop 1.7 a poder ser Gratis si fuera posible en caso de no ser posible cual me recomendariais comprar.</font></font>
</p>

<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Un Saludo Gracias</font></font>
</p>
]]></description><guid isPermaLink="false">1036008</guid><pubDate>Tue, 17 Nov 2020 12:15:57 +0000</pubDate></item><item><title>M&#xF3;dulo ejemplo CQRS en Customers</title><link>https://forum.prestashop.com/topic/1029670-m%C3%B3dulo-ejemplo-cqrs-en-customers/</link><description><![CDATA[
<p>
	Módulo de ejemplo de uso de <a href="https://devdocs.prestashop.com/1.7/development/architecture/domain/cqrs/" rel="external nofollow"><em><u><strong>CQRS en Prestashop</strong></u></em> </a>que añade un nuevo filtro de Grupo de Cliente en el listado
</p>

<p>
	Solo compatible con versiones recientes de Prestashop 1.7.6, 1.7.7
</p>

<p>
	 
</p>

<p>
	<img alt="spacer.png" class="ipsImage" data-ratio="29.24" height="292" style="height:auto;" width="1000" data-src="https://i.ibb.co/gdRh1wK/Captura-de-pantalla-2020-08-13-a-las-15-30-04.png" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>
<p>
<a class="ipsAttachLink" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=251807" data-fileExt='zip' data-fileid='251807'>filtercustomer.zip</a></p>]]></description><guid isPermaLink="false">1029670</guid><pubDate>Thu, 13 Aug 2020 13:42:26 +0000</pubDate></item><item><title>[M&#xD3;DULO GRATIS] Optimizaci&#xF3;n de Base de Datos en PrestaShop</title><link>https://forum.prestashop.com/topic/1073775-m%C3%B3dulo-gratis-optimizaci%C3%B3n-de-base-de-datos-en-prestashop/</link><description><![CDATA[<p>
	Aquí puede encontrar toda la información necesaria para optimizar la base de datos de su tienda y que esta funcione mucho mas rápido. Además podrán obtener un módulo gratuito que hace el 90% del trabajo automáticamente: 
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/23ZlVA4aGWM?feature=oembed" title="Optimización 2022 de Base de Datos en PrestaShop 1.7 + Módulo Gratis (1/2)" width="200"></iframe>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1073775</guid><pubDate>Wed, 15 Feb 2023 16:04:03 +0000</pubDate></item><item><title>[Solucionado] M&#xF3;dulo "presupuesto" desde checkout</title><link>https://forum.prestashop.com/topic/1069623-solucionado-m%C3%B3dulo-presupuesto-desde-checkout/</link><description><![CDATA[<p>
	Necesito que para los pedidos de 'Canarias', no se puedan realizar pedidos como tal, sino que se realice una solicitud de presupuesto.
</p>

<p>
	Estoy buscando un módulo que permita hacer esto, pero todos los que he encontrado son desde el carrito y necesito que sea seleccionable como un método de pago en el checkout. Cuando el usuario haya seleccionado como provincia 'Canarias', si es posible no le aparezca para seleccionar el 'Método de envío' y solo le salga un método de pago para elegir que será el del presupuesto en este caso.
</p>

<p>
	No se tiene que generar un presupuesto automático, le tendria que llegar un correo indicando algo tipo 'solicitud recibida, recibira su prespuesto lo antes posible'.
</p>

<p>
	¿Alguien sabe de un módulo que haga algo como esto o lo más similar posible?
</p>

<p>
	Un saludo y gracias de antemano!!
</p>
]]></description><guid isPermaLink="false">1069623</guid><pubDate>Mon, 24 Oct 2022 08:07:47 +0000</pubDate></item><item><title>IQIT WISHLIST icono falla</title><link>https://forum.prestashop.com/topic/1073469-iqit-wishlist-icono-falla/</link><description><![CDATA[<p>
	Hola! tengo el módulo de Iqit Wishlist y en la página de producto el botón de añadir a lista de deseos me aparecen los dos iconos juntos, sólo debería de aparecer el corazón con contorno y cuando lo agregas a la lista de deseos el corazón con relleno. Supongo que será algún fallo del JS pero no encuentro ese archivo. ¿Alguien sabría dónde encontrar ese archivo? <br /><br />
	Gracias!!!!
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2023_02/1941236052_Capturadepantalla2023-02-08alas10_41_55.png.229ba5d95ded78ce3f2d875344dbcad2.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="304658" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2023_02/1941236052_Capturadepantalla2023-02-08alas10_41_55.png.229ba5d95ded78ce3f2d875344dbcad2.png" data-ratio="19.33" width="450" class="ipsImage ipsImage_thumbnailed" alt="Captura de pantalla 2023-02-08 a las 10.41.55.png"></a></p>]]></description><guid isPermaLink="false">1073469</guid><pubDate>Wed, 08 Feb 2023 09:44:12 +0000</pubDate></item><item><title>[MODULO GRATIS] Caracteristicas de producto visibles 3. - PS 1.3/8</title><link>https://forum.prestashop.com/topic/1073067-modulo-gratis-caracteristicas-de-producto-visibles-3-ps-138/</link><description><![CDATA[<p>
	<img alt="caracteristicas-del-producto.jpg" class="ipsImage" data-ratio="75.08" height="750" style="height:auto;" width="750" data-src="https://catalogo-onlinersi.net/2564-thickbox_default/caracteristicas-del-producto.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" />'
</p>

<p>
	 
</p>

<p>
	Este módulo muestra las características de los productos de una manera más visible, y también en el listado de productos.
</p>

<p>
	Puede personalizar el tamaño de la fuente así como los  colores de los textos.
</p>

<p>
	<strong>Caracteristicas </strong>:
</p>

<ul><li>
		Cross browser
	</li>
	<li>
		Plurilingüe
	</li>
	<li>
		MultiStore
	</li>
</ul><p>
	Video
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/zxExKXrZGCg?feature=oembed" title="Product Features - PrestaShop module" width="200"></iframe>
	</div>
</div>

<p>
	<strong>Link</strong>
</p>

<p>
	<strong><a href="https://catalogo-onlinersi.net/es/complementos/334-caracteristicas-del-producto.html" rel="external nofollow">https://catalogo-onlinersi.net/es/complementos/334-caracteristicas-del-producto.html</a></strong>
</p>

<p>
	<a class="ipsAttachLink" data-fileid="303892" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=303892&amp;key=855dda496418ea489a2adad5409e94fc" data-fileext="zip" rel="">features.zip</a>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1073067</guid><pubDate>Sat, 28 Jan 2023 15:59:33 +0000</pubDate></item><item><title>[MODULO] Gmaps - Google Maps en PrestaShop v1.3 - PS 1.3/8</title><link>https://forum.prestashop.com/topic/1072728-modulo-gmaps-google-maps-en-prestashop-v13-ps-138/</link><description><![CDATA[<p>
	<img alt="gmaps-modulo-prestashop.jpg" class="ipsImage" data-ratio="75.08" height="750" style="height:auto;" width="750" data-src="https://catalogo-onlinersi.net/2549-thickbox_default/gmaps-modulo-prestashop.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	 
</p>

<p>
	Gmaps le permite mostrar un mapa de Google Maps en su tienda Prestashop.
</p>

<p>
	El módulo puede permitirle configurar la URL del mapa de Google, la altura y el estilo (ancho). En PS &gt;1.6, puede establecer el tamaño en bloques (columnas).
</p>

<p>
	El módulo se puede usar en la página principal, pie de página o columnas.
</p>

<p>
	<strong>Caracteristicas :</strong>
</p>

<ul><li>
		Totalmente configurable
	</li>
	<li>
		Navegador cruzado
	</li>
	<li>
		Plurilingüe
	</li>
	<li>
		Tienda múltiple
	</li>
</ul><p>
	<strong>Vídeo:</strong>
</p>

<p>
	 
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/Jn4393z-XW0?feature=oembed" title="Gmaps - Prestashop module google maps" width="200"></iframe>
	</div>
</div>

<p>
	<strong>Link:</strong>
</p>

<p>
	<a href="https://catalogo-onlinersi.net/es/inicio/463-gmaps-modulo-prestashop.html" rel="external nofollow">https://catalogo-onlinersi.net/es/inicio/463-gmaps-modulo-prestashop.html</a>
</p>

<p>
	<a class="ipsAttachLink" data-fileid="303300" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=303300&amp;key=14f7058f3162274b0f05da1965f15ef3" data-fileext="zip" rel="">gmaps.zip</a>
</p>
]]></description><guid isPermaLink="false">1072728</guid><pubDate>Thu, 19 Jan 2023 10:24:24 +0000</pubDate></item><item><title>[MODULO] Bloque de Categor&#xED;as con imagenes - PS 1.3/8</title><link>https://forum.prestashop.com/topic/1072719-modulo-bloque-de-categor%C3%ADas-con-imagenes-ps-138/</link><description><![CDATA[<p>
	<img alt="imagen-de-categorias.jpg" class="ipsImage" data-ratio="75.08" height="750" style="height:auto;" width="750" data-src="https://catalogo-onlinersi.net/2547-thickbox_default/imagen-de-categorias.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></p>

<p>
	 
</p>

<p>
	Este módulo le permite mostrar el bloque de categorías con imágenes.
</p>

<p>
	Para que el modulo funcione, debe agregar miniaturas en cada categoría (o imágenes en versiones mas viejas de PrestaShop)
</p>

<p>
	<strong>Caracteristicas:</strong>
</p>

<ul><li>
		Cross browser
	</li>
	<li>
		Multilingual
	</li>
	<li>
		Multiple store
	</li>
</ul><p>
	<strong>Link:</strong>
</p>

<p>
	<strong><a href="https://catalogo-onlinersi.net/es/bloques/68-imagen-de-categorias.html" rel="external nofollow">https://catalogo-onlinersi.net/es/bloques/68-imagen-de-categorias.html</a></strong>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="303294" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=303294&amp;key=62b1f1dd2f236c70fc345372cc620426" rel="">blockcategoriesi.zip</a>
</p>
]]></description><guid isPermaLink="false">1072719</guid><pubDate>Thu, 19 Jan 2023 09:02:48 +0000</pubDate></item><item><title>PayPal error en Prestashop 1.7.4.2</title><link>https://forum.prestashop.com/topic/1071261-paypal-error-en-prestashop-1742/</link><description><![CDATA[<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Hola buenas tardes </font></font>
</p>

<p>
	 
</p>

<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Tengo un problema , a la hora de hacer un pago en la web si eliges Pay Pal la opción de pagar , sale una ventanita la cual dice que pulses botón paypal , pero resulta que no aparece ni hay forma , obviamente e actualizado el modulo y de echo a salido una segunda opción de pago en 3 veces con pay pal , e echo una prueba con dicho botón y perfecto pero si quiero solo con pay pal no deja . </font></font>
</p>

<p>
	 
</p>

<p>
	<font style="vertical-align:inherit;"><font style="vertical-align:inherit;">Alguien le a pasado , podéis ayudarme , la verdad es que no tengo mucho conocimientos  </font></font>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Gracias
</p>

<p>
	 
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2022_12/1502185619_Capturadepantalla2022-12-06193904.png.b188c9d7aa6ff791269c69a08c7e50cd.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="300820" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_12/1502185619_Capturadepantalla2022-12-06193904.png.b188c9d7aa6ff791269c69a08c7e50cd.png" data-ratio="54.31" width="812" class="ipsImage ipsImage_thumbnailed" alt="Captura de pantalla 2022-12-06 193904.png"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_12/227133915_Capturadepantalla2022-12-06193924.png.9e522fcf2c277e6ef0f2be72277e568e.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="300819" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_12/227133915_Capturadepantalla2022-12-06193924.png.9e522fcf2c277e6ef0f2be72277e568e.png" data-ratio="98.29" width="643" class="ipsImage ipsImage_thumbnailed" alt="Captura de pantalla 2022-12-06 193924.png"></a></p>]]></description><guid isPermaLink="false">1071261</guid><pubDate>Tue, 06 Dec 2022 18:39:53 +0000</pubDate></item><item><title>Ventas y pedidos v1.3.1  fallo en estad&#xED;stica - 1.6.1.24</title><link>https://forum.prestashop.com/topic/1071323-ventas-y-pedidos-v131-fallo-en-estad%C3%ADstica-16124/</link><description><![CDATA[<p>
	hola Tod@s! 
</p>

<p>
	resulta que me doy cuenta que estadística / pedidos , pues la suma de los pedidos ni la cantidad corresponde a la realidad?
</p>

<p>
	Es quizas mi modulo que no funciona bien o que hay una version mas  moderna? 
</p>

<p>
	Ventas y pedidos v1.3.1   - 1.6.1.24
</p>

<p>
	Le pasa igual a alguien?
</p>

<p>
	y como conseguir modulos de prestashop de version 1.6 ?  (no lo veo Addons ?!?!)
</p>

<p>
	 
</p>

<p>
	gracias de antemano
</p>
]]></description><guid isPermaLink="false">1071323</guid><pubDate>Thu, 08 Dec 2022 13:02:44 +0000</pubDate></item><item><title>Ayuda para configurar Servicio al Cliente - IMAP</title><link>https://forum.prestashop.com/topic/1009530-ayuda-para-configurar-servicio-al-cliente-imap/</link><description><![CDATA[
<p>
	Buenas tardes;
</p>

<p>
	Tengo configurado en:
</p>

<p>
	Servicio al Cliente -&gt; Servicio al Cliente: "Opciones de servicio al cliente" la url imap, puerto, usuario y contraseña, al pinchar en guardar no sale ningún error.
</p>

<p>
	Parámetros de la tienda -&gt; Contacto (tanto para webmaster como para servicio al cliente, el correo está como contacto@midominio.com
</p>

<p>
	<u>Problema</u>:
</p>

<p>
	Cuando desde la web, registrado como un usuario cliente, pincho en "contacte con nosotros" -&gt; Servicio al cliente -&gt; "Escribo una frase" y le doy a enviar, me sale un mensaje "mensaje enviado correctamente".
</p>

<p>
	En Servicio al Cliente -&gt; Servicio al Cliente -&gt; Aparece el mensaje enviado
</p>

<p>
	PERO A MI BUZON contacto@midominio.com no llega ningún mensaje
</p>

<p>
	Por favor, pueden decirme que falta para que lleguen esos mensajes?
</p>

<p>
	Como dato extra tengo configurado, en Parámetros avanzado -&gt; Dirección de correo electrónico: nombre del dominio para el correo electrónico, smtp, usuario smtp y contraseña smtp, cifrado y puerto. Envío un correo de pruebas a contacto@midominio.com y llega correctamente.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1009530</guid><pubDate>Tue, 26 Nov 2019 16:27:59 +0000</pubDate></item><item><title>M&#xF3;dulo gratuito para mostrar un mensaje en el bottom de la p&#xE1;gina</title><link>https://forum.prestashop.com/topic/1070458-m%C3%B3dulo-gratuito-para-mostrar-un-mensaje-en-el-bottom-de-la-p%C3%A1gina/</link><description><![CDATA[<p>
	Hola,
</p>

<p>
	hemos desarrollado un módulo para mostrar un texto promocional o informativo al pie del área visible de la página, de manera que se ve en todo momento. Se puede cerrar clicando el aspa y al hacerlo se inserta una cookie que hace que no se vuelva a mostrar hasta pasadas 24 horas.
</p>

<p>
	El texto es configurable, así como los colores de frente y fondo, los colores se deben introducir en el formulario como valor hexadecimal. También se puede añadir una URL para hacer del texto un enlace. Os pego un pantallazo aquí debajo, podéis verlo en vivo en <a href="https://www.cigarroselectronicos.com/" rel="external nofollow">https://www.cigarroselectronicos.com/</a>
</p>

<p>
	Lo hemos probado para la versión 1.6.1.24 y para la versión 1.7.6.7 y funciona correctamente, si alguien encuentra algún problema os agradeceríamos que nos lo comunicárais. También estamos abiertos a las sugerencias que nos podáis hacer llegar.
</p>

<p>
	Esperamos que os sea útil, un saludo,
</p>

<p>
	David
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2022_11/custommessages_sample.jpg.9f24173790de448066b7789d2252ce8c.jpg" data-fileid="299492" data-fileext="jpg" rel=""><img alt="custommessages_sample.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="299492" data-ratio="47.1" style="height:auto;" width="1000" data-src="https://forum.prestashop.com/uploads/monthly_2022_11/custommessages_sample.thumb.jpg.bf391895e9b320ab7be7e1472ea11f71.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="299493" href="https://forum.prestashop.com/applications/core/interface/file/attachment.php?id=299493&amp;key=ea48ad384de3e2091560fba316a91574" rel="">custommessages.zip</a>
</p>
]]></description><guid isPermaLink="false">1070458</guid><pubDate>Tue, 15 Nov 2022 14:14:58 +0000</pubDate></item><item><title>ContentBox - Aumentar el n&#xFA;mero de caracteres de su contenido</title><link>https://forum.prestashop.com/topic/1069924-contentbox-aumentar-el-n%C3%BAmero-de-caracteres-de-su-contenido/</link><description><![CDATA[<p>
	Buenas tardes,
</p>

<p>
	Estoy usando el módulo gratuito ContentBox (personalizado) en mi web, pero tengo un problema, que no me había pasado hasta el momento. Se ve que el código que introduzco es demasiado largo, y no me lo muestra completo en la web. He intentado mirar en los archivos del módulo si había algún tope de caracteres a introducir en el campo "Module's Content", pero no lo he encontrado...
</p>

<p>
	¿Alguien se ha enfrentado a este problema?
</p>

<p>
	La solución de dividir el contenido en dos ContentBoxs diferentes y ponerlos a continuación uno de otro, no me sirve, ya que se trata de un texto y un botón para mostrar el resto del contenido. Por lo que no creo que pudiera conectar esta función en dos módulos diferentes.
</p>

<p>
	Para que os hagáis una idea de lo que estoy diciendo, os mando el enlace a la web:
</p>

<p>
	<a href="https://muebles.tienda/" rel="external nofollow">https://muebles.tienda/</a>
</p>

<p>
	El código añadido está al final, justo encima del Footer. Podréis observar el botón "Ver Fabricantes", que si clicáis sobre él, se despliega el listado de fabricantes, pero incompleto.... Acaba en el fabricante "Pliegomodel", pero existen mucho más, como se puede observar en la siguiente página:
</p>

<p>
	<a href="https://muebles.tienda/content/26-fabricantes" rel="external nofollow">https://muebles.tienda/content/26-fabricantes</a>
</p>

<p>
	¿A alguien más le ha pasado este caso y ha sabido / podido solucionarlo?
</p>

<p>
	Gracias por adelantado.
</p>

<p>
	Saludos,
</p>

<p>
	Edith.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1069924</guid><pubDate>Mon, 31 Oct 2022 17:55:44 +0000</pubDate></item><item><title>Modulo exportar productos (con filtro de fabricante) 1.7</title><link>https://forum.prestashop.com/topic/1065252-modulo-exportar-productos-con-filtro-de-fabricante-17/</link><description><![CDATA[<p>
	Buenos días, 
</p>

<p>
	Me gustaría saber si conocéis algún modulo o forma para exportar el listado de productos de mi tienda y que pueda filtrarlo por fabricantes. 
</p>

<p>
	Lo he exportado desde el apartado de "catalogo" de Prestashop y se exporta correctamente pero no se puede filtrar por fabricante. Desde el módulo "Export Product" en una tienda que tenemos en 1.6 si que se exporta bien pero en 1.7 no se exportan correctamente las columnas y no se puede filtrar. 
</p>

<p>
	Mi objetivo con esto es poder subir masivamente los precios de cierto fabricante. 
</p>

<p>
	Muchas gracias de antemano.
</p>

<p>
	Un saludo.
</p>
]]></description><guid isPermaLink="false">1065252</guid><pubDate>Sat, 18 Jun 2022 10:41:25 +0000</pubDate></item><item><title>[M&#xF3;dulo gratuito] Notificaciones de productos para clientes (sin existencias)</title><link>https://forum.prestashop.com/topic/1047458-m%C3%B3dulo-gratuito-notificaciones-de-productos-para-clientes-sin-existencias/</link><description><![CDATA[
<p>
	Buenas chavel@s, acabo de encontrar un módulo gratis que tiene muy buena pinta os pongo el link para que lo veais, se trata de que cuando no hay stock y el cliente pone que se avise, el vendedor no sabe si hay muchos clientes esperando o no, con el este módulo podéis ver los clientes que están interesados y así poder traer una cantidad más justa de ese producto o por lo menos tener un idea de los posibles clientes interesados.
</p>

<p>
	Os dejo donde podeis descargarlo, lo he probado en la version 1.7.7.3 y funciona de maravilla.
</p>

<p>
	 
</p>
<iframe allowfullscreen="" data-embedauthorid="840493" data-embedcontent="" data-embedid="embed1218798099" scrolling="no" style="height:390px;max-width:502px;" data-embed-src="https://forum.prestashop.com/topic/1043543-free-module-customer-product-notifications-out-of-stock/?do=embed"></iframe>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1047458</guid><pubDate>Wed, 21 Apr 2021 11:45:20 +0000</pubDate></item><item><title>actualizaci&#xF3;m prestashop</title><link>https://forum.prestashop.com/topic/1067762-actualizaci%C3%B3m-prestashop/</link><description><![CDATA[<p>
	Buenos dias,
</p>

<p>
	alguien sabe como actualizar de la versión 1.7.6.6 a la más actual?
</p>

<p>
	Gracias
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1067762</guid><pubDate>Thu, 01 Sep 2022 11:06:18 +0000</pubDate></item><item><title>Corregir texto en el slider principal prestashop 1.7.7.1</title><link>https://forum.prestashop.com/topic/1067224-corregir-texto-en-el-slider-principal-prestashop-1771/</link><description><![CDATA[<p>
	tengo la plantilla por defecto y tengo un problema con el slider principal por defecto, en el movil se ve bien, pero el texto que pongo se sobre pone en la version web, alguien que me ayude a que en la version movil se vea como en la version web.
</p>

<p>
	 
</p>

<p>
	mi pagina es : <a href="https://meinteresa.pro/" rel="external nofollow">https://meinteresa.pro/</a>
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2022_08/88134958_FireShotCapture055.png.1c2b6004aee43c787e8d2f2087435883.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="294184" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_08/890766364_FireShotCapture055.thumb.png.fd79a32b215cb8b89c30589b1560d480.png" data-ratio="33.2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="FireShot Capture 055.png"></a></p>]]></description><guid isPermaLink="false">1067224</guid><pubDate>Wed, 17 Aug 2022 02:19:01 +0000</pubDate></item><item><title>FatalErrorException Al actualizar M&#xF3;dulo Marketing de Google</title><link>https://forum.prestashop.com/topic/1066700-fatalerrorexception-al-actualizar-m%C3%B3dulo-marketing-de-google/</link><description><![CDATA[<p>
	<span class="ipsEmoji">?</span> <span class="ipsEmoji">?</span>
</p>

<p>
	Hola Forúm, ojalá me puedan ayudar tengo Prestashop 1.7.8.3  PHP 7.4 y soy nueva en esto.
</p>

<p>
	-Al actualizar el Módulo de Marketing de Google  me envió una alerta que ocupaba un archivo "Prestashop EventBus" al darle click supuse que se instaló -Esto para poder utilizar la función de sincronizar el catálogo de productos con Google, y al momento de continuar actualizando otros módulos me marcó ya error.
</p>

<p>
	- Vi en el hosting y si lo tengo instalado y actualizado 
</p>

<p>
	-Y en el back de PS me aparece esto
</p>

<p>
	Les agradeceré con todo el corazón su solución para hacerla funcionar nuevamente <span class="ipsEmoji">?</span>
</p>

<p>
	Anexo capturas de pantalla
</p>

<p>
	 
</p>

<p>
	 
</p>

<p><a href="//media.invisioncic.com/t336404/monthly_2022_07/FatalError.JPG.6467b77004899f9bc5d1595face0d059.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="293417" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_07/FatalError.thumb.JPG.ba9c3c1f03ca6ab03979a5743734f3db.JPG" data-ratio="46.9" width="1000" class="ipsImage ipsImage_thumbnailed" alt="FatalError.JPG"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_07/1409671991_PrestashopEventBusUpgrade.JPG.a750415655911334d91f29ef964a6dea.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="293416" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_07/1245954109_PrestashopEventBusUpgrade.thumb.JPG.5494547aaa9f3271bf82cce6e2925eeb.JPG" data-ratio="32.3" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Prestashop EventBus Upgrade.JPG"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_07/587704226_PrestashopEventBus_02.JPG.f403a8c1a8e5ea5be3f631995ee565e2.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="293415" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_07/1136143773_PrestashopEventBus_02.thumb.JPG.ccb7d69ccb2c6ba730e316abc26dfb55.JPG" data-ratio="5.8" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Prestashop EventBus_02.JPG"></a></p>
<p><a href="//media.invisioncic.com/t336404/monthly_2022_07/1534192557_PrestashopEventBus.JPG.d6f8eb95efdbec57c0efd66fbe50f11a.JPG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="293414" src="https://www.prestashop.com/forums/applications/core/interface/js/spacer.png" data-src="//media.invisioncic.com/t336404/monthly_2022_07/1773287420_PrestashopEventBus.thumb.JPG.3f679b74056b30763ccda4a1a0971b19.JPG" data-ratio="44.5" width="1000" class="ipsImage ipsImage_thumbnailed" alt="Prestashop EventBus.JPG"></a></p>]]></description><guid isPermaLink="false">1066700</guid><pubDate>Sun, 31 Jul 2022 05:50:10 +0000</pubDate></item><item><title>[SOLUCIONADO ]Modulo Prestashop Facebook (ps_facebook) requiere Event Bus</title><link>https://forum.prestashop.com/topic/1049676-solucionado-modulo-prestashop-facebook-ps_facebook-requiere-event-bus/</link><description><![CDATA[
<p>
	Hola, estoy intentando instalar el módulo Prestashop Facebook, version 1.10.0 que es la última, aunque me pasa con otras versiones anteriores.
</p>

<p>
	Utilizo Prestashop 1.7.6.1 pero el error lo da en otras versiones más modernas que tengo de prueba.
</p>

<p>
	El caso es que una vez instalado el módulo, al ir a configurar pide que se instale el módulo Prestashop Event Bus... este módulo no está en el catálogo de módulos, y el propio botón que sirve para instalarlo, falla, no hace nada.
</p>

<p>
	Al no tener este módulo, no se sincronizan los productos de Prestashop con el Facebook Commerce Manager, por lo tanto no puedo crear catálogos de productos en Facebook ni hacer anuncios.
</p>

<p>
	He buscado en un montón de foros de otros idiomas y no encuentro la solución
</p>

<p>
	Otro módulo requerido es Prestashop Accounts, tengo instalada la última versión: 4.0
</p>

<p>
	Cualquier ayuda o sugerencia es bienvenida.
</p>

<p>
	Muchas gracias.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//media.invisioncic.com/t336404/monthly_2021_06/ps_facebook.jpg.51ee901de11e778e32eefed308262342.jpg" data-fileid="273520" data-fileext="jpg" rel=""><img alt="ps_facebook.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="273520" data-ratio="54.1" style="height:auto;" width="1000" data-src="https://forum.prestashop.com/uploads/monthly_2021_06/ps_facebook.thumb.jpg.887cc0c5f660baa2a5bdad27e5b2c884.jpg" src="https://forum.prestashop.com/applications/core/interface/js/spacer.png" /></a>
</p>
]]></description><guid isPermaLink="false">1049676</guid><pubDate>Wed, 02 Jun 2021 18:17:19 +0000</pubDate></item><item><title>Problema con M&#xF3;dulo Mail Alert</title><link>https://forum.prestashop.com/topic/1065523-problema-con-m%C3%B3dulo-mail-alert/</link><description><![CDATA[<p>
	Buenos días,
</p>

<p>
	Estoy utilizando la versión 1.6 de Prestashop. Anteriormente el módulo Mail Alerts no estaba funcionando, por lo que lo desinstalé y volví a instalar. Ahora manda correos cuando un producto pasa de stock 0 a stock &gt;0, pero el correo que se envía, se envía vacío con asunto "Product available", hay un archivo adjunto "img" dentro del correo, pero también vacío. En la base de datos de correos enviados, aparecen los detalles con template "customer_qty", pero no puedo saber de que producto se trata. La base de datos mailalert_customers_oos sigue estando vacía.
</p>

<p>
	Me gustaría poder solucionar este problema, aunque si alguien me pudiera decir como editar el template "customer_qty", ya me estaría ayudando. Mi mayor interés es poder saber a que producto pertenece el correo que se envía al cliente.
</p>

<p>
	Cualquier solución o explicación de las causas por la que puede estar pasando esto es bienvenida.
</p>
]]></description><guid isPermaLink="false">1065523</guid><pubDate>Mon, 27 Jun 2022 11:12:20 +0000</pubDate></item><item><title>Mostrar a que grupo pertenece el cliente en el panel Mi Cuenta</title><link>https://forum.prestashop.com/topic/1065448-mostrar-a-que-grupo-pertenece-el-cliente-en-el-panel-mi-cuenta/</link><description><![CDATA[<p>
	Hola! Escribo para ver si alguien conoce un módulo que pueda hacer lo siguiente:
</p>

<p>
	Estamos buscando un módulo que permita al cliente saber en que grupo de cliente se encuentra, es decir, que en el panel "Mi Cuenta", en la información de los datos del cliente, por ejemplo, que aparezca, en texto informativo, a que grupo de usuarios pertenece.
</p>

<p>
	Esto es porque tenemos un sistema de membresía y dependiendo en que nivel se encuentra el usuario le pertenece unas "recompensas" u otras, entonces creemos conveniente que el cliente sepa a que nivel pertenece a cada momento.
</p>

<p>
	 
</p>

<p>
	Gracias!!
</p>
]]></description><guid isPermaLink="false">1065448</guid><pubDate>Fri, 24 Jun 2022 08:28:11 +0000</pubDate></item><item><title>Blog gratuito prestashop - Meta description sobre Cookies al publicar en Redes Sociales</title><link>https://forum.prestashop.com/topic/1048360-blog-gratuito-prestashop-meta-description-sobre-cookies-al-publicar-en-redes-sociales/</link><description><![CDATA[
<p>
	Buenos días,
</p>

<p>
	Tengo un módulo de blog gratuito en Prestashop y, a pesar de completar todos los campos correctamente con el texto, etiquetas, meta title y Meta description, estos últimos dos datos no se trasladan correctamente al contenido. 
</p>

<p>
	Al publicar el contenido en redes sociales como Facebook me aparece la correspondiente imagen, pero no se añade ni el título del post ni la descripción. De hecho aparece un texto que indica: "este sitio web utiliza cookies para que usted tenga la mejor...".
</p>

<p>
	¿Qué manera hay para solucionarlo?
</p>

<p>
	¡Muchas gracias!
</p>
]]></description><guid isPermaLink="false">1048360</guid><pubDate>Fri, 07 May 2021 07:25:41 +0000</pubDate></item><item><title>M&#xF3;dulo whatsapp chat</title><link>https://forum.prestashop.com/topic/1065106-m%C3%B3dulo-whatsapp-chat/</link><description><![CDATA[<p>
	Hola.
</p>

<p>
	Aguien sabe si existe un módulo de chat de whatsapp gratuito?? por lo que veo ya no hay en el addons.
</p>

<p>
	He intentado descargando un par pero no me aparecen en el frontoffice, no se si será por la versión de Prestashop 1.7.8.
</p>

<p>
	Gracias de antemano.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1065106</guid><pubDate>Tue, 14 Jun 2022 10:17:41 +0000</pubDate></item></channel></rss>
