Fix: product attributes with the same sort order value were overwriting each other in getProductAttributes(), causing only one attribute to display on the frontend. Now uses usort() with sequential keys. New: Preview button in product edit form opens product page in new tab. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Instrukcja tworzenia aktualizacji shopPRO
Nowy sposób (od v0.301) — automatyczny build script
Wymagania
- Git z tagami wersji (np.
v0.299,v0.300) - PowerShell
Workflow
1. Pracuj normalnie: commit, push, commit, push...
2. Gdy wersja gotowa:
→ git tag v0.XXX
→ ./build-update.ps1 -ToTag v0.XXX -ChangelogEntry "NEW - opis"
3. Upload plików z updates/0.XX/ na serwer aktualizacji
Użycie build-update.ps1
# Podgląd zmian (bez tworzenia plików)
./build-update.ps1 -ToTag v0.301 -DryRun
# Budowanie paczki (auto-detect poprzedniego tagu)
./build-update.ps1 -ToTag v0.301 -ChangelogEntry "NEW - opis zmiany"
# Z jawnym tagiem źródłowym
./build-update.ps1 -FromTag v0.300 -ToTag v0.301 -ChangelogEntry "NEW - opis"
Co robi skrypt automatycznie
git diff --name-statusmiędzy tagami → listy dodanych/zmodyfikowanych/usuniętych plików- Filtrowanie przez
.updateignore(pliki deweloperskie, konfiguracyjne itp.) - Kopiowanie plików do temp, tworzenie ZIP
- SHA256 checksum ZIP-a
- Generowanie
ver_X.XXX_manifest.json - Generowanie legacy
_sql.txti_files.txt(okres przejściowy) - Aktualizacja
versions.phpichangelog.php - Cleanup
Pliki wynikowe
updates/0.XX/ver_X.XXX.zip— paczka z plikamiupdates/0.XX/ver_X.XXX_manifest.json— manifest z checksumem, listą zmian, SQLupdates/0.XX/ver_X.XXX_sql.txt— legacy SQL (okres przejściowy)updates/0.XX/ver_X.XXX_files.txt— legacy lista plików do usunięcia (okres przejściowy)
Migracje SQL
Pliki SQL umieszczaj w migrations/{version}.sql (np. migrations/0.301.sql).
Build script automatycznie je wczyta i umieści w manifeście + legacy _sql.txt.
Format manifestu
{
"version": "0.301",
"date": "2026-02-22",
"checksum_zip": "sha256:abc123...",
"files": {
"modified": ["autoload/Domain/Order/OrderRepository.php"],
"added": ["autoload/Domain/Order/NewHelper.php"],
"deleted": ["autoload/shop/OldClass.php"]
},
"directories_deleted": [],
"sql": ["ALTER TABLE pp_x ADD COLUMN y INT DEFAULT 0"],
"changelog": "NEW - opis zmiany"
}
.updateignore
Plik w katalogu głównym projektu, wzorce plików wykluczonych z paczek (jak .gitignore).
INFO
pamiętaj że push czasem zwraca błąd autoryzacji, wtedy spróbuj ponownie