Virtual Products Management Pro - File Scaricabili per Combinazione con Versioni e Sincronizzazione GitHub
PrestaShop 9 considera Prodotto virtuale e Prodotto con combinazioni come tipi che si escludono a vicenda: un prodotto venduto in più edizioni o livelli di licenza non può quindi avere normalmente un file per variante. Questo modulo gestisce i file scaricabili indipendentemente da quel vincolo, assegnando a ogni combinazione il proprio file, il proprio numero di versione e il proprio registro delle modifiche. Gestisci l'intero catalogo da una sola pagina invece di aprire i prodotti uno per uno, collega una combinazione a un repository GitHub e recupera file, versione e changelog con un solo pulsante, e avvisa via e-mail chi ha già acquistato quando esce una nuova versione. Per PrestaShop 1.7 – 9.
Il problema di PrestaShop 9 che questo modulo risolve
In PrestaShop 9, "Prodotto virtuale" e "Prodotto con combinazioni" sono tipi di prodotto che si escludono a vicenda. Non è un problema finché non vendi software, e-book, campioni o licenze in più di una variante — Standard e Pro, singola postazione e team, Windows e macOS — perché nel momento in cui ti servono le combinazioni, il campo file del prodotto virtuale integrato scompare.
Questo modulo gestisce i file scaricabili al di fuori del sistema dei prodotti virtuali di PrestaShop. Crea il prodotto come Prodotto con combinazioni, definisci le varianti e carica un file su ciascuna. Ogni combinazione ottiene il proprio file, il proprio numero di versione e il proprio registro delle modifiche.
Una sola pagina invece di un prodotto per volta
I file dell'intero catalogo vivono su una sola schermata. Espandi un prodotto, vedi le sue combinazioni, carica o sostituisci un file, imposta la versione, scrivi il registro delle modifiche. Sette contatori in cima ti dicono a che punto sei con un colpo d'occhio — File virtuali, Prodotti, File combinazioni, File semplici, File mancanti, Download totali e Clienti — così un prodotto il cui file non è mai stato caricato compare qui in rosso, invece di essere scoperto da un cliente.
Ogni file porta con sé anche il proprio limite di download, la validità in giorni e la data di scadenza: una licenza può quindi avere una durata definita anziché essere consegnata per sempre. Funziona qualunque formato scaricabile: ZIP, PDF, MP3, FLAC, EPUB o qualsiasi altra cosa tu venda.
Collega una combinazione a GitHub e smetti di caricare file
Ogni combinazione funziona in una delle due modalità: Carica file oppure Repository GitHub. Passa a GitHub, indica un owner/repo e, se vuoi, un branch o un tag: un unico pulsante Recupera / Sincronizza da GitHub recupera insieme il file, la versione e il registro delle modifiche — creando il pacchetto della release, estraendo la versione e leggendo gli oggetti dei commit recenti lato server, invece di limitarsi a riempire un campo nel tuo browser.
I repository privati sono supportati tramite Personal Access Token. Imposta una volta un token predefinito per tutto il negozio e sovrascrivilo per singolo prodotto quando un repository diverso richiede credenziali diverse.
Una tabella Recent Sync Log (registro delle sincronizzazioni recenti) riporta cosa è realmente accaduto a ogni esecuzione — prodotto, combinazione, stato, messaggio e data — mostrando il passaggio dalla versione precedente a quella nuova, oppure esplicitamente "no version change" quando un'esecuzione non ha trovato nulla. Sopra la tabella c'è la data e l'ora di Last automatic run (ultima esecuzione automatica), così capisci a colpo d'occhio se la sincronizzazione pianificata è davvero partita o non è mai stata eseguita.
Una precisazione onesta: la sincronizzazione oraria si appoggia al sistema di attività cron di PrestaShop, che per essere avviato ha bisogno di un vero cron esterno sul tuo server. Finché non lo hai configurato, il pulsante manuale Recupera / Sincronizza fa lo stesso lavoro su richiesta — e la riga Last automatic run continuerà a dire never, che è esattamente il motivo per cui viene mostrata.
Di' ai tuoi clienti che c'è un aggiornamento
Ogni combinazione ha il proprio pulsante Notifica clienti, che invia un'e-mail ai clienti che hanno acquistato quel prodotto per avvisarli che è disponibile una nuova versione. Per qualsiasi cosa venduta come licenza o come strumento di lavoro, quel singolo pulsante è la differenza tra un cliente che fa l'upgrade e uno che si dimentica di averlo comprato.
I clienti hanno una vera area download
Chi acquista vede i propri file nel proprio account e nella pagina di dettaglio dell'ordine, con la versione a cui ha diritto. È la normale esperienza dell'account PrestaShop, estesa per coprire i file per combinazione che il core non è in grado di rappresentare.
Cosa ha corretto la versione 1.5.x
La versione 1.5.2 ha corretto una serie di difetti reali che vale la pena conoscere, perché sono di quelli che restano nascosti per mesi.
Il campo del registro delle modifiche non poteva mai essere aggiornato dalla sincronizzazione. Entrambi i percorsi di sincronizzazione omettevano changelog dalla propria istruzione UPDATE, quindi una volta creata la riga di una combinazione il campo restava congelato all'ultimo testo inserito a mano — e nessuno dei due percorsi recuperava affatto il contenuto del changelog da GitHub lato server. Ora la sincronizzazione legge da sé gli oggetti dei commit recenti del ref risolto e li salva nella stessa operazione, sia sul percorso manuale sia su quello automatico.
Il percorso di sincronizzazione manuale e quello automatico erano divergenti. L'endpoint manuale reimplementava in modo indipendente le chiamate a GitHub, la gestione dello zip e l'estrazione della versione, così una correzione applicata a uno non si applicava silenziosamente all'altro. Ora il percorso manuale delega alla classe di sincronizzazione condivisa — continuando però a prendere repository e ref dal form che hai davanti, in modo che provare prima di salvare funzioni ancora.
La sincronizzazione oraria registrava sempre "success" senza alcun dettaglio, anche quando non era cambiato nulla, il che rendeva il registro inutile per distinguere un'esecuzione tranquilla da un fallimento silenzioso. Inoltre le installazioni nuove non registravano mai l'hook cron — lo faceva solo il blocco di autoriparazione della pagina di configurazione, quindi la sincronizzazione oraria non poteva partire fino a quando un amministratore non apriva per caso quella pagina. Ora l'installazione lo registra direttamente.
Un aspetto da pianificare
Poiché il prodotto non è contrassegnato come Virtuale in PrestaShop, il calcolo standard delle spese di spedizione continua ad applicarsi. Per tenere questi prodotti liberi da spese di spedizione, assegnali a un trasportatore con una regola a costo zero / spedizione gratuita. È un passaggio di configurazione da fare una sola volta, e la pagina di configurazione del modulo lo dice chiaramente invece di lasciartelo scoprire su un ordine reale.
Compatibilità
PrestaShop 1.7, 8 e 9, in otto lingue: italiano, francese, inglese, olandese, polacco, spagnolo, tedesco e turco. Compatibile con il multinegozio. La disinstallazione rimuove i dati del modulo e i file virtuali che gestisce, come dichiara esplicitamente la conferma di disinstallazione — quindi fai prima una copia se intendi reinstallarlo.
Domande frequenti
Perché mi serve su PrestaShop 9?
Perché PS 9 rende Prodotto virtuale e Prodotto con combinazioni mutuamente esclusivi. Se vendi un prodotto scaricabile in più edizioni o livelli, il core non può dare a ogni variante il proprio file. Questo modulo sì.
Ogni combinazione può avere un file e una versione diversi?
Sì — il proprio file, il proprio numero di versione e il proprio registro delle modifiche. È esattamente lo scopo del modulo.
Come funziona la sincronizzazione con GitHub?
Porta una combinazione in modalità Repository GitHub, indica un owner/repo più un branch o un tag opzionale e premi Recupera / Sincronizza da GitHub: recupera file, versione e changelog in un colpo solo. I repository privati funzionano tramite un Personal Access Token, impostato una volta come predefinito del negozio e sovrascrivibile per singolo prodotto. La sincronizzazione automatica oraria richiede inoltre l'esecutore di attività cron di PrestaShop, avviato da un vero cron sul tuo server.
I miei clienti sapranno quando pubblico un aggiornamento?
Sì, se premi Notifica clienti sulla combinazione: invia un'e-mail ai clienti che hanno acquistato quel prodotto.
Su questi prodotti verranno addebitate le spese di spedizione?
Può succedere, perché PrestaShop non li considera virtuali. Assegnali a un trasportatore con una regola di spedizione gratuita e l'addebito scompare.
Quali tipi di file sono supportati?
ZIP, PDF, MP3, FLAC, EPUB e qualsiasi altro formato scaricabile.
Come individuo un prodotto a cui manca il file?
Tra i contatori in cima alla pagina c'è la voce File mancanti, così una lacuna emerge lì e non nel reclamo di un cliente.
Cosa succede se disinstallo?
I dati del modulo e i file virtuali che gestisce vengono eliminati — la conferma lo dichiara. Conserva una copia di tutto ciò che ti servirà di nuovo.
-
CompatibilitàPrestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Traduzioni del Modulo DisponibiliFrancese
Inglese
Italiano
Olandese
Polacco
Portoghese
Spagnolo
Tedesco
Turco
MEG Venture
4 altri prodotti nella stessa categoria
| Versione | 1.5.2 |
|---|---|
| Ultimo aggiornamento | 2026-07-30 |
| Registro delle modifiche | - [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
Commenti (6)
Non è stato possibile inviare il tuo giudizio sulla recensione
Segnala commento
Segnalazione inviata
Non è stato possibile inviare la tua segnalazione