Virtual Products Management Pro - Fichiers téléchargeables par déclinaison, versions et synchro GitHub
Sous PrestaShop 9, Produit dématérialisé et Produit avec déclinaisons sont deux types mutuellement exclusifs — un produit vendu en plusieurs éditions ou niveaux de licence ne peut donc pas porter un fichier par variante. Ce module gère les fichiers téléchargeables indépendamment de cette restriction : chaque déclinaison reçoit son propre fichier, son numéro de version et son journal des modifications. Pilotez tout le catalogue depuis une seule page au lieu d'ouvrir les produits un par un, reliez une déclinaison à un dépôt GitHub pour récupérer le fichier, la version et le changelog d'un seul bouton, et prévenez par e-mail vos acheteurs à chaque nouvelle version. Pour PrestaShop 1.7 à 9.
Le problème PrestaShop 9 que ce module résout
Dans PrestaShop 9, les types Produit dématérialisé et Produit avec déclinaisons sont mutuellement exclusifs. Cela ne pose aucun souci jusqu'au jour où vous vendez un logiciel, un e-book, des échantillons ou des licences en plusieurs variantes — Standard et Pro, mono-poste et équipe, Windows et macOS — car dès que vous avez besoin de déclinaisons, le champ fichier du produit dématérialisé disparaît.
Ce module gère les fichiers téléchargeables en dehors du système de produits dématérialisés de PrestaShop. Créez le produit en Produit avec déclinaisons, définissez les variantes, puis téléversez un fichier sur chacune. Chaque déclinaison obtient son propre fichier, son propre numéro de version et son propre journal des modifications.
Une seule page au lieu d'un produit à la fois
Les fichiers de tout le catalogue tiennent sur un seul écran. Vous dépliez un produit, vous voyez ses déclinaisons, vous téléversez ou remplacez un fichier, vous renseignez la version, vous rédigez le journal des modifications. Sept compteurs en haut de page vous donnent la situation d'un coup d'œil — Fichiers virtuels, Produits, Fichiers de déclinaisons, Fichiers simples, Fichiers manquants, Téléchargements totaux et Clients — de sorte qu'un produit dont le fichier n'a jamais été téléversé apparaît en rouge à cet endroit, au lieu d'être découvert par un client.
Chaque fichier porte aussi sa propre limite de téléchargements, sa validité en jours et sa date d'expiration : une licence peut donc être limitée dans le temps plutôt que cédée indéfiniment. Tous les formats téléchargeables fonctionnent : ZIP, PDF, MP3, FLAC, EPUB, ou tout ce que vous vendez.
Reliez une déclinaison à GitHub et arrêtez de téléverser
Chaque déclinaison fonctionne dans l'un des deux modes : Téléverser un fichier ou Dépôt GitHub. Passez-la en mode GitHub, indiquez un owner/repo et, si besoin, une branche ou un tag : un seul bouton Récupérer / Synchroniser depuis GitHub rapatrie le fichier, la version et le journal des modifications ensemble — il empaquette la release, extrait la version et lit les derniers messages de commit côté serveur, au lieu de simplement remplir un champ dans votre navigateur.
Les dépôts privés sont pris en charge via un Personal Access Token. Définissez un Personal Access Token GitHub par défaut une fois pour toute la boutique, et surchargez-le produit par produit lorsqu'un dépôt demande d'autres identifiants.
Un tableau Recent Sync Log (journal des synchronisations récentes) consigne ce qui s'est réellement passé à chaque exécution — produit, déclinaison, statut, message et date — en affichant la transition ancienne → nouvelle version, ou explicitement "no version change" quand une exécution n'a rien trouvé. Juste au-dessus, un horodatage Last automatic run (dernière exécution automatique) vous dit d'un coup d'œil si la synchronisation planifiée s'est vraiment déclenchée ou ne s'est jamais lancée. Ces deux libellés apparaissent en anglais dans l'interface, y compris en français.
Une réserve en toute franchise : la synchronisation horaire repose sur le système de tâches cron de PrestaShop, qui a besoin d'un véritable cron externe sur votre serveur pour être déclenché. Tant que ce n'est pas en place, le bouton manuel Récupérer / Synchroniser fait exactement le même travail à la demande — et la ligne Last automatic run continuera d'indiquer never, ce qui est précisément l'intérêt de l'afficher.
Annoncez la mise à jour à vos clients
Chaque déclinaison dispose de son propre bouton Notifier les clients, qui envoie un e-mail aux clients ayant acheté ce produit pour leur annoncer qu'une nouvelle version est disponible. Pour tout ce qui se vend sous forme de licence ou d'outil, ce simple bouton fait la différence entre un client qui met à jour et un client qui oublie qu'il possède votre produit.
Vos clients disposent d'un vrai espace de téléchargement
Les acheteurs retrouvent leurs fichiers dans leur compte et sur le détail de la commande, avec la version à laquelle ils ont droit. C'est l'expérience de compte PrestaShop habituelle, étendue aux fichiers par déclinaison que le cœur du logiciel ne sait pas représenter.
Ce que la version 1.5.x a corrigé
La version 1.5.2 a corrigé une série de vrais défauts qui méritent d'être connus, car ce sont typiquement ceux qui restent invisibles pendant des mois.
Le champ journal des modifications ne pouvait jamais être mis à jour par la synchronisation. Les deux chemins de synchronisation omettaient changelog dans leur instruction UPDATE : dès que la ligne d'une déclinaison existait, le champ restait figé sur ce qui avait été saisi à la main en dernier — et aucun des deux chemins ne récupérait de contenu de changelog depuis GitHub côté serveur. La synchronisation récupère désormais elle-même les derniers messages de commit de la référence résolue et les enregistre dans la même opération, sur le chemin manuel comme sur le chemin automatique.
Les chemins de synchronisation manuel et automatique avaient divergé. Le point d'entrée manuel réimplémentait de son côté les appels GitHub, le traitement du zip et l'extraction de la version : un correctif appliqué à l'un ne s'appliquait silencieusement pas à l'autre. Le chemin manuel délègue maintenant à la classe de synchronisation partagée — tout en continuant de prendre le dépôt et la référence dans le formulaire que vous avez sous les yeux, pour que l'essai avant enregistrement reste possible.
La synchronisation horaire journalisait toujours "succès" sans aucun détail, même lorsque rien n'avait changé, ce qui rendait le journal inutile pour distinguer une exécution sans nouveauté d'un échec silencieux. Et les installations neuves n'enregistraient jamais le hook cron : seul le bloc d'auto-réparation de la page de configuration le faisait, de sorte que la synchronisation horaire ne pouvait pas se déclencher avant qu'un administrateur ouvre cette page. L'installation l'enregistre désormais directement.
Un point à prévoir
Comme le produit n'est pas marqué comme dématérialisé dans PrestaShop, le calcul standard des frais de port continue de s'appliquer. Pour que ces produits restent exempts de frais de livraison, affectez-les à un transporteur assorti d'une règle à coût zéro / livraison gratuite. C'est une étape de réglage unique, et la page de configuration du module l'indique noir sur blanc plutôt que de vous laisser le découvrir sur une commande réelle.
Compatibilité
PrestaShop 1.7, 8 et 9, en huit langues : allemand, anglais, espagnol, français, italien, néerlandais, polonais et turc. Compatible multiboutique. La désinstallation supprime les données du module et les fichiers virtuels qu'il gère, ce que la confirmation de désinstallation annonce sans détour — pensez donc à faire une copie si vous prévoyez de réinstaller.
Questions fréquentes
Pourquoi ai-je besoin de ce module sur PrestaShop 9 ?
Parce que PS 9 rend Produit dématérialisé et Produit avec déclinaisons mutuellement exclusifs. Si vous vendez un produit téléchargeable en plusieurs éditions ou niveaux, le cœur du logiciel ne peut pas attribuer un fichier à chaque variante. Ce module, si.
Chaque déclinaison peut-elle avoir un fichier et une version différents ?
Oui — son propre fichier, son propre numéro de version et son propre journal des modifications. C'est tout l'objet du module.
Comment fonctionne la synchronisation GitHub ?
Passez une déclinaison en mode Dépôt GitHub, indiquez un owner/repo plus, en option, une branche ou un tag, et cliquez sur Récupérer / Synchroniser depuis GitHub : le fichier, la version et le journal des modifications arrivent d'un seul coup. Les dépôts privés fonctionnent grâce à un Personal Access Token, défini une fois comme valeur par défaut de la boutique et surchargeable par produit. La synchronisation automatique horaire exige en plus le gestionnaire de tâches cron de PrestaShop, lui-même déclenché par un véritable cron sur votre serveur.
Mes clients sauront-ils que je publie une mise à jour ?
Oui, si vous cliquez sur Notifier les clients au niveau de la déclinaison : un e-mail part vers les clients qui ont acheté ce produit.
Ces produits seront-ils facturés en frais de port ?
Ils peuvent l'être, car PrestaShop ne les considère pas comme dématérialisés. Affectez-les à un transporteur doté d'une règle de livraison gratuite et les frais disparaissent.
Quels types de fichiers sont pris en charge ?
ZIP, PDF, MP3, FLAC, EPUB et tout autre format téléchargeable.
Comment repérer un produit dont le fichier est manquant ?
Les compteurs en haut de page comprennent un chiffre Fichiers manquants : le trou apparaît donc là, et non dans une réclamation client.
Que se passe-t-il si je désinstalle ?
Les données du module et les fichiers virtuels qu'il gère sont supprimés — la confirmation le précise. Conservez une copie de tout ce dont vous aurez encore besoin.
-
CompatibilitéPrestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Traductions de Module DisponiblesAllemand
Anglais
Espagnol
Français
Italien
Néerlandais
Polonais
Portugais
Turc
MEG Venture
4 autres produits dans la même catégorie
| Version | 1.5.2 |
|---|---|
| Dernière mise à jour | 2026-07-30 |
| Journal des modifications | - [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
Commentaires (6)
Votre avis ne peut pas être envoyé
Signaler le commentaire
Signalement envoyé
Votre signalement ne peut pas être envoyé