Wirtualne produkty Pro - pliki do pobrania dla każdej kombinacji, wersje i synchronizacja z GitHub
W PrestaShop 9 typy Produkt wirtualny i Produkt z kombinacjami wykluczają się wzajemnie — produkt sprzedawany w kilku edycjach lub poziomach licencji nie może więc normalnie mieć osobnego pliku dla każdego wariantu. Ten moduł zarządza plikami do pobrania niezależnie od tego ograniczenia, dając każdej kombinacji własny plik, numer wersji i dziennik zmian. Zarządzaj całym katalogiem z jednej strony zamiast otwierać produkty po kolei, połącz kombinację z repozytorium GitHub i pobierz plik, wersję oraz dziennik zmian jednym przyciskiem, a następnie powiadom e-mailem klientów, którzy już kupili produkt. Dla PrestaShop 1.7 – 9.
Problem PrestaShop 9, który ten moduł rozwiązuje
W PrestaShop 9 "Produkt wirtualny" i "Produkt z kombinacjami" to wzajemnie wykluczające się typy produktu. Nie stanowi to problemu, dopóki nie sprzedajesz oprogramowania, e-booków, próbek czy licencji w więcej niż jednym wariancie — Standard i Pro, jedno stanowisko i zespół, Windows i macOS — bo w momencie, w którym potrzebujesz kombinacji, wbudowane pole pliku produktu wirtualnego przestaje być dostępne.
Ten moduł zarządza plikami do pobrania poza systemem produktów wirtualnych PrestaShop. Utwórz produkt jako Produkt z kombinacjami, zdefiniuj warianty i wgraj plik do każdego z nich. Każda kombinacja otrzymuje własny plik, własny numer wersji i własny dziennik zmian.
Jedna strona zamiast jednego produktu naraz
Pliki całego katalogu znajdują się na jednym ekranie. Rozwiń produkt, zobacz jego kombinacje, wgraj lub podmień plik, ustaw wersję, wpisz dziennik zmian. Siedem liczników na górze pokazuje stan rzeczy w jednym spojrzeniu — Pliki wirtualne, Produkty, Pliki kombinacji, Proste pliki, Brakujące pliki, Łączna liczba pobrań i Klienci — więc produkt, do którego nigdy nie wgrano pliku, świeci się tam na czerwono, zamiast zostać odkryty przez klienta.
Każdy plik ma też własny limit Pobrań, liczbę Dni ważności i datę wygaśnięcia, więc licencję można ograniczyć w czasie, a nie przekazywać bezterminowo. Działa każdy format do pobrania: ZIP, PDF, MP3, FLAC, EPUB i wszystko inne, co sprzedajesz.
Połącz kombinację z GitHub i przestań wgrywać pliki
Każda kombinacja działa w jednym z dwóch trybów: Prześlij plik albo Repozytorium GitHub. Przełącz ją na GitHub, podaj owner/repo oraz opcjonalnie gałąź lub tag, a jeden przycisk Pobierz / Synchronizuj z GitHub pobierze plik, wersję i dziennik zmian razem — pakując wydanie, wyodrębniając wersję i wczytując tematy ostatnich commitów po stronie serwera, a nie tylko wypełniając pole w przeglądarce.
Repozytoria prywatne są obsługiwane przez Personal Access Token. Ustaw Domyślny GitHub Personal Access Token raz dla całego sklepu i nadpisz go przy produkcie, gdy inne repozytorium wymaga innych danych uwierzytelniających.
Tabela Recent Sync Log (dziennik ostatnich synchronizacji) zapisuje, co faktycznie się stało w każdym przebiegu — produkt, kombinacja, status, komunikat i data — pokazując przejście ze starej wersji na nową albo wprost "no version change", gdy przebieg nie znalazł nic nowego. Nad nią widnieje znacznik czasu Last automatic run (ostatni automatyczny przebieg), więc od razu widzisz, czy zaplanowana synchronizacja rzeczywiście się uruchomiła, czy nie zadziałała ani razu.
Jedna uczciwa uwaga: synchronizacja godzinowa opiera się na systemie zadań cron samego PrestaShop, który wymaga prawdziwego zewnętrznego crona na Twoim serwerze. Dopóki nie zostanie on skonfigurowany, ręczny przycisk Pobierz / Synchronizuj z GitHub wykonuje to samo zadanie na żądanie — a wiersz Last automatic run będzie nadal pokazywał never, co jest dokładnie powodem, dla którego jest wyświetlany.
Powiedz klientom, że jest aktualizacja
Każda kombinacja ma własny przycisk Powiadom klientów, który wysyła e-mail do klientów, którzy kupili ten produkt, z informacją o dostępności nowej wersji. W przypadku wszystkiego, co sprzedaje się jako licencja lub narzędzie, ten jeden przycisk decyduje o różnicy między klientem, który zaktualizuje produkt, a takim, który zapomni, że go posiada.
Klienci dostają porządną sekcję pobrań
Kupujący widzą swoje pliki na swoim koncie i na stronie szczegółów zamówienia, wraz z wersją, do której mają prawo. To zwykłe doświadczenie konta PrestaShop, rozszerzone tak, by objęło pliki przypisane do poszczególnych kombinacji, których rdzeń systemu nie potrafi odwzorować.
Co naprawiła wersja 1.5.x
Wersja 1.5.2 usunęła zestaw rzeczywistych usterek, o których warto wiedzieć, bo są to takie błędy, które potrafią ukrywać się miesiącami.
Pole dziennika zmian nigdy nie mogło zostać zaktualizowane przez synchronizację. Obie ścieżki synchronizacji pomijały changelog w instrukcji UPDATE, więc gdy wiersz kombinacji już istniał, pole zostawało zamrożone na tym, co ostatnio wpisano ręcznie — a żadna ze ścieżek nie pobierała treści dziennika zmian z GitHub po stronie serwera. Synchronizacja pobiera teraz tematy ostatnich commitów wskazanej referencji i zapisuje je w tej samej operacji, zarówno w trybie ręcznym, jak i automatycznym.
Ręczna i automatyczna ścieżka synchronizacji się rozeszły. Ręczny punkt końcowy niezależnie reimplementował wywołania GitHub, obsługę archiwum zip i wyodrębnianie wersji, więc poprawka zastosowana w jednym miejscu po cichu nie działała w drugim. Ręczna ścieżka korzysta teraz ze wspólnej klasy synchronizacji — nadal biorąc repozytorium i referencję z formularza, na który patrzysz, więc wypróbuj przed zapisaniem działa jak dawniej.
Synchronizacja godzinowa zawsze logowała "success" bez żadnych szczegółów, nawet gdy nic się nie zmieniło, co czyniło dziennik bezużytecznym przy odróżnianiu spokojnego przebiegu od cichej awarii. Ponadto świeże instalacje nigdy nie rejestrowały hooka cron — robił to tylko blok samonaprawy na stronie konfiguracji, więc synchronizacja godzinowa nie mogła się uruchomić, dopóki administrator przypadkiem nie otworzył tej strony. Instalacja rejestruje go teraz bezpośrednio.
Jedna rzecz, którą trzeba zaplanować
Ponieważ produkt nie jest oznaczony w PrestaShop jako wirtualny, nadal obowiązuje standardowe wyliczanie kosztów wysyłki. Aby te produkty pozostały wolne od opłat za wysyłkę, przypisz je do przewoźnika z regułą zerowego kosztu / darmowej wysyłki. To jednorazowa czynność konfiguracyjna, a strona konfiguracji modułu mówi o tym wprost, zamiast pozostawiać Cię z tym odkryciem przy rzeczywistym zamówieniu.
Kompatybilność
PrestaShop 1.7, 8 i 9, w ośmiu językach: niderlandzki, angielski, francuski, niemiecki, włoski, polski, hiszpański i turecki. Obsługa multistore. Odinstalowanie usuwa dane modułu oraz zarządzane przez niego pliki wirtualne, o czym potwierdzenie odinstalowania mówi otwarcie — więc zrób wcześniej kopię, jeśli zamierzasz instalować moduł ponownie.
Najczęściej zadawane pytania
Dlaczego potrzebuję tego w PrestaShop 9?
Ponieważ PS 9 czyni typy Produkt wirtualny i Produkt z kombinacjami wzajemnie wykluczającymi się. Jeśli sprzedajesz produkt do pobrania w kilku edycjach lub poziomach, rdzeń systemu nie potrafi przypisać każdemu wariantowi własnego pliku. Ten moduł potrafi.
Czy każda kombinacja może mieć inny plik i wersję?
Tak — własny plik, własny numer wersji i własny dziennik zmian. To właśnie sens tego modułu.
Jak działa synchronizacja z GitHub?
Przełącz kombinację w tryb Repozytorium GitHub, podaj owner/repo oraz opcjonalną gałąź lub tag i naciśnij Pobierz / Synchronizuj z GitHub — pobierze plik, wersję i dziennik zmian w jednym kroku. Repozytoria prywatne działają przez Personal Access Token, ustawiony raz jako domyślny dla sklepu i nadpisywalny przy produkcie. Automatyczna synchronizacja godzinowa wymaga dodatkowo systemu zadań cron PrestaShop uruchamianego prawdziwym cronem na Twoim serwerze.
Czy klienci dowiedzą się, gdy wydam aktualizację?
Tak, jeśli naciśniesz Powiadom klientów przy kombinacji — wyśle e-mail do klientów, którzy kupili ten produkt.
Czy te produkty będą obciążane kosztem wysyłki?
Mogą być, bo PrestaShop nie traktuje ich jako wirtualnych. Przypisz je do przewoźnika z regułą darmowej wysyłki i opłata zniknie.
Jakie formaty plików są obsługiwane?
ZIP, PDF, MP3, FLAC, EPUB i każdy inny format do pobrania.
Jak wykryć produkt, któremu brakuje pliku?
Liczniki na górze strony obejmują pozycję Brakujące pliki, więc luka widoczna jest tam, a nie w reklamacji klienta.
Co się stanie, jeśli odinstaluję moduł?
Dane modułu oraz zarządzane przez niego pliki wirtualne zostaną usunięte — potwierdzenie mówi o tym wprost. Zachowaj kopię wszystkiego, czego jeszcze będziesz potrzebować.
-
KompatybilnośćPrestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Dostępne Tłumaczenia ModułuAngielski
Francuski
Hiszpański
Niderlandzki
Niemiecki
Polski
Portugalski
Turecki
Włoski
MEG Venture
4 innych produktów w tej samej kategorii
| Wersja | 1.5.2 |
|---|---|
| Ostatnia aktualizacja | 2026-07-30 |
| Dziennik zmian | - [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
Komentarze (6)
Chwilowo nie możesz polubić tej opinii
Zgłoś komentarz
Zgłoszenie wysłane
Twoje zgłoszenie nie może zostać wysłane