Virtual Products Management Pro - Archivos descargables por combinación con versiones y sincronización con GitHub
En PrestaShop 9, Producto virtual y Producto con combinaciones son tipos mutuamente excluyentes, así que un producto que se vende en varias ediciones o niveles de licencia no puede llevar normalmente un archivo por variante. Este módulo gestiona los archivos descargables al margen de esa restricción: cada combinación recibe su propio archivo, su número de versión y su registro de cambios. Controle todo el catálogo desde una sola página en lugar de abrir los productos uno a uno, vincule una combinación a un repositorio de GitHub y traiga el archivo, la versión y el registro de cambios con un solo botón, y avise por correo a sus compradores cuando publique una versión nueva. Para PrestaShop 1.7 a 9.
El problema de PrestaShop 9 que este módulo resuelve
En PrestaShop 9, los tipos Producto virtual y Producto con combinaciones son mutuamente excluyentes. Eso no supone ningún problema hasta el día en que vende software, libros electrónicos, muestras o licencias en más de una variante — Standard y Pro, licencia individual y de equipo, Windows y macOS — porque en el momento en que necesita combinaciones, el campo de archivo del producto virtual desaparece.
Este módulo gestiona los archivos descargables fuera del sistema de productos virtuales de PrestaShop. Cree el producto como Producto con combinaciones, defina las variantes y cargue un archivo en cada una. Cada combinación obtiene su propio archivo, su propio número de versión y su propio registro de cambios.
Una sola página en lugar de un producto cada vez
Los archivos de todo el catálogo caben en una única pantalla. Despliegue un producto, vea sus combinaciones, cargue o reemplace un archivo, indique la versión, redacte el registro de cambios. Siete contadores en la parte superior le dicen cómo va todo de un vistazo — Archivos virtuales, Productos, Archivos de combinaciones, Archivos simples, Archivos faltantes, Descargas totales y Clientes — de modo que un producto cuyo archivo nunca se cargó aparece ahí en rojo, en vez de que lo descubra un cliente.
Cada archivo lleva además su propio límite de descargas, su validez en días y su fecha de caducidad, así que una licencia puede acotarse en el tiempo en lugar de entregarse indefinidamente. Funciona cualquier formato descargable: ZIP, PDF, MP3, FLAC, EPUB o lo que usted venda.
Vincule una combinación a GitHub y deje de cargar archivos
Cada combinación funciona en uno de dos modos: Cargar archivo o Repositorio de GitHub. Cámbiela al modo GitHub, indique un owner/repo y, si lo desea, una rama o una etiqueta: un único botón Obtener / Sincronizar desde GitHub trae el archivo, la versión y el registro de cambios a la vez — empaqueta la release, extrae la versión y lee los asuntos de los últimos commits en el servidor, en lugar de limitarse a rellenar una casilla en su navegador.
Los repositorios privados se admiten mediante un Personal Access Token. Defina un Personal Access Token de GitHub predeterminado una sola vez para toda la tienda y sobrescríbalo producto por producto cuando un repositorio distinto necesite credenciales diferentes.
Una tabla Recent Sync Log (registro de sincronizaciones recientes) recoge lo que ocurrió realmente en cada ejecución — producto, combinación, estado, mensaje y fecha — mostrando la transición de versión anterior → nueva, o explícitamente "no version change" cuando una ejecución no encontró nada. Justo encima hay una marca de tiempo Last automatic run (última ejecución automática), para que sepa de un vistazo si la sincronización programada se ha disparado de verdad o no se ha ejecutado nunca. Estas dos etiquetas aparecen en inglés en la interfaz, también en español.
Una advertencia honesta: la sincronización cada hora se apoya en el sistema de tareas cron de PrestaShop, que necesita un cron externo real en su servidor para activarse. Hasta que eso esté configurado, el botón manual Obtener / Sincronizar hace exactamente el mismo trabajo cuando usted lo pida — y la línea Last automatic run seguirá diciendo never, que es precisamente el motivo de mostrarla.
Anuncie la actualización a sus clientes
Cada combinación dispone de su propio botón Notificar clientes, que envía un correo a los clientes que compraron ese producto para avisarles de que hay una versión nueva disponible. Para todo lo que se vende como licencia o como herramienta, ese único botón marca la diferencia entre un cliente que actualiza y uno que olvida que lo tiene.
Sus clientes disponen de un área de descargas en condiciones
Los compradores ven sus archivos en su cuenta y en la página de detalle del pedido, con la versión a la que tienen derecho. Es la experiencia de cuenta habitual de PrestaShop, ampliada para cubrir los archivos por combinación que el núcleo no puede representar.
Qué corrigió la versión 1.5.x
La versión 1.5.2 corrigió una serie de defectos reales que merece la pena conocer, porque son de los que permanecen ocultos durante meses.
El campo de registro de cambios nunca podía actualizarse mediante la sincronización. Las dos vías de sincronización omitían changelog en su instrucción UPDATE, de modo que en cuanto existía la fila de una combinación el campo se quedaba congelado en lo último que se hubiera escrito a mano — y ninguna de las dos vías obtenía contenido del registro de cambios desde GitHub en el servidor. Ahora la sincronización recupera por sí misma los asuntos de los últimos commits de la referencia resuelta y los guarda en la misma operación, tanto en la vía manual como en la automática.
Las vías de sincronización manual y automática se habían separado. El punto de entrada manual reimplementaba por su cuenta las llamadas a GitHub, el tratamiento del zip y la extracción de la versión, así que una corrección aplicada a una no se aplicaba silenciosamente a la otra. La vía manual ahora delega en la clase de sincronización compartida, sin dejar de tomar el repositorio y la referencia del formulario que tiene delante, para que la prueba antes de guardar siga funcionando.
La sincronización cada hora registraba siempre "correcto" sin ningún detalle, incluso cuando nada había cambiado, lo que hacía el registro inútil para distinguir una ejecución sin novedades de un fallo silencioso. Y las instalaciones nuevas nunca registraban el hook de cron: solo lo hacía el bloque de autorreparación de la página de configuración, de manera que la sincronización cada hora no podía dispararse hasta que algún administrador abriera esa página. Ahora la instalación lo registra directamente.
Un punto que hay que prever
Como el producto no está marcado como virtual en PrestaShop, se le sigue aplicando el cálculo estándar de gastos de envío. Para que estos productos queden libres de gastos de envío, asígnelos a un transportista con una regla de coste cero / envío gratuito. Es un ajuste que se hace una sola vez, y la propia página de configuración del módulo lo dice con claridad en lugar de dejar que lo descubra en un pedido real.
Compatibilidad
PrestaShop 1.7, 8 y 9, en ocho idiomas: alemán, español, francés, inglés, italiano, neerlandés, polaco y turco. Compatible con multitienda. La desinstalación elimina los datos del módulo y los archivos virtuales que gestiona, tal como advierte sin rodeos la confirmación de desinstalación, así que haga una copia antes si piensa reinstalarlo.
Preguntas frecuentes
¿Por qué necesito este módulo en PrestaShop 9?
Porque PS 9 hace que Producto virtual y Producto con combinaciones sean mutuamente excluyentes. Si vende un producto descargable en varias ediciones o niveles, el núcleo no puede dar a cada variante su propio archivo. Este módulo sí.
¿Puede cada combinación tener un archivo y una versión diferentes?
Sí: su propio archivo, su propio número de versión y su propio registro de cambios. Ese es el sentido del módulo.
¿Cómo funciona la sincronización con GitHub?
Cambie una combinación al modo Repositorio de GitHub, indique un owner/repo más una rama o etiqueta opcional y pulse Obtener / Sincronizar desde GitHub: trae el archivo, la versión y el registro de cambios de una sola vez. Los repositorios privados funcionan mediante un Personal Access Token, definido una vez como valor predeterminado de la tienda y sobrescribible por producto. La sincronización automática cada hora necesita además el gestor de tareas cron de PrestaShop, activado por un cron real en su servidor.
¿Sabrán mis clientes cuándo publico una actualización?
Sí, si pulsa Notificar clientes en la combinación: se envía un correo a los clientes que compraron ese producto.
¿Se cobrarán gastos de envío por estos productos?
Pueden cobrarse, porque PrestaShop no los considera virtuales. Asígnelos a un transportista con una regla de envío gratuito y el cargo desaparece.
¿Qué tipos de archivo se admiten?
ZIP, PDF, MP3, FLAC, EPUB y cualquier otro formato descargable.
¿Cómo detecto un producto al que le falta el archivo?
Los contadores de la parte superior de la página incluyen la cifra de Archivos faltantes, así que el hueco aparece ahí y no en una reclamación de un cliente.
¿Qué ocurre si desinstalo el módulo?
Se eliminan los datos del módulo y los archivos virtuales que gestiona; la confirmación lo advierte. Conserve una copia de todo lo que vaya a necesitar de nuevo.
-
CompatibilidadPrestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Traducciones Disponibles del MóduloAlemán
Español
Francés
Inglés
Italiano
Neerlandés
Polaco
Portugués
Turco
MEG Venture
4 productos más en la misma categoría
| Versión | 1.5.2 |
|---|---|
| Última actualización | 2026-07-30 |
| Registro de cambios | - [2026-07-30] Add missing translation keys for virtual product combination module in Turkish - [2026-07-27] Fix GitHub sync never persisting changelog updates (v1.5.2) - [2026-07-24] Add translations for Virtual Products Management Pro module in Dutch, Polish, and Turkish - [2026-07-23] fix: correct upgrade function name for version 1.4.12 to prevent upgrade failures - [2026-07-23] Fix protected-property access when loading the sync class in syncall.php - [2026-07-23] Fix "Class VirtualProductCombinationGithubSync not found" in syncall.php - [2026-07-23] Fix Sync All Now hitting admin dispatcher instead of front controller - [2026-07-23] Fix boolean passed as log message in syncall.php - [2026-07-23] Fix SQL syntax error: duplicate LIMIT 1 in notification queries - [2026-07-23] Fix root cause: version extraction bailed out before opening the zip - [2026-07-23] Fix literal backslash-n in version-change confirm dialog - [2026-07-23] Add composer.json and ultra-permissive fallback for version extraction - [2026-07-23] Add dual-method brute-force version extraction as fallback - [2026-07-23] Improve version extraction with comprehensive PHP parsing - [2026-07-23] Improve version extraction regex to handle more module formats - [2026-07-23] Fix version change detection and add manual sync trigger button - [2026-07-23] Add version detection and auto-send notifications for GitHub sync - [2026-07-23] Implement automatic GitHub synchronization feature with logging - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add authentic translations for FR, DE, PL, NL, TR, IT, ES - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add missing translation files (fr, de, pl, nl, tr, it, es) - [2026-07-22] feat: Repackage GitHub zipball for PrestaShop compatibility - [2026-07-22] feat: Add GitHub integration for virtual product combinations - [2026-07-07] v1.4.17: Block native virtual files on product page - [2026-07-07] Fix virtual product notice on creation and ProductDownload save error - [2026-07-06] Batch-load GitHub URLs and PATs for products from admin panel configuration |
• [2026-07-07] Fix virtual product notice on creation and ProductDownload save error
• [2026-07-06] Batch-load GitHub URLs and PATs for products from admin panel configuration
• [2026-07-04] Add GitHub URL and PAT handling in product data retrieval and save methods
• [2026-07-04] Enhance language handling in product data retrieval and save methods, adding GitHub URL persistence and improving data accuracy in admin UI
• [2026-06-29] Improve SQL query in getVirtualData to filter out orphaned combination rows, ensuring accurate data in admin UI
• [2026-06-29] Enhance logging in getVirtualData success callback to include matched product count for improved debugging
• [2026-06-29] Add logging to getVirtualData success callback for improved debugging
• [2026-06-29] Refactor getVirtualData method to query product download data directly, ensuring fresh results and improved data accuracy
• [2026-06-29] Enhance save method to return fresh data immediately after saving, improving user experience and data accuracy
• [2026-06-29] Update response handling in getVirtualData and save methods for improved JSON output and error visibility
• [2026-06-29] Enhance save method response by including database error details and verification data for improved debugging and transparency
• [2026-06-29] Add cache: false to AJAX request for improved data freshness
• [2026-06-29] Improve save method response handling and logging for better error visibility
• [2026-06-29] Remove limit from changelog version query to retrieve all entries for accurate version comparison
• [2026-06-29] Improve error handling in save method and update AJAX response to JSON format
• [2026-06-29] Enhance KPI metrics in admin panel by adding total files, products covered, combination files, simple files, missing files, total downloads, and customers with downloads.
• [2026-06-26] Add conditions to filter active product downloads in getProductDownloads method
• [2026-06-26] Increase the number of commits fetched from GitHub API from 5 to 30
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] order detail page fix
• [2026-06-24] My Downloads page link is fixed
• [2026-06-24] Order detail page download link display problem is solved
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-29] Enhance logging in getVirtualData success callback to include matched product count for improved debugging
• [2026-06-29] Add logging to getVirtualData success callback for improved debugging
• [2026-06-29] Refactor getVirtualData method to query product download data directly, ensuring fresh results and improved data accuracy
• [2026-06-29] Enhance save method to return fresh data immediately after saving, improving user experience and data accuracy
• [2026-06-29] Update response handling in getVirtualData and save methods for improved JSON output and error visibility
• [2026-06-29] Enhance save method response by including database error details and verification data for improved debugging and transparency
• [2026-06-29] Add cache: false to AJAX request for improved data freshness
• [2026-06-29] Improve save method response handling and logging for better error visibility
• [2026-06-29] Remove limit from changelog version query to retrieve all entries for accurate version comparison
• [2026-06-29] Improve error handling in save method and update AJAX response to JSON format
• [2026-06-29] Enhance KPI metrics in admin panel by adding total files, products covered, combination files, simple files, missing files, total downloads, and customers with downloads.
• [2026-06-26] Add conditions to filter active product downloads in getProductDownloads method
• [2026-06-26] Increase the number of commits fetched from GitHub API from 5 to 30
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] order detail page fix
• [2026-06-24] My Downloads page link is fixed
• [2026-06-24] Order detail page download link display problem is solved
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] .
• [2026-06-24] feat: Ensure download hashes are generated for orders before payment confirmation
• [2026-06-24] feat: Implement download hash generation for existing orders and enhance "My Downloads" functionality
• [2026-06-24] feat: Update alignment styles for "My Downloads" link in account page
• [2026-06-24] feat: Update "My Downloads" link styling and improve account page block description
• [2026-06-24] feat: Update ecotax calculations to support PrestaShop 9 compatibility and enhance "My Downloads" link styling
Comentarios (6)
Su agradecimiento a la reseña no pudo ser enviado
Reportar comentario
Reporte enviado
Su reporte no pudo ser enviado