Testy, import i aktualizacje
Sprawdź paczkę i wydaj ją bez utraty danych klientów.
Import ZIP w panelu administratora
W panelu administratora, w sekcji szablonów, wybierz import ZIP. Wymagane jest uprawnienie templates.import. Poprawna paczka trafia do testów ze statusem testing; sam upload nie publikuje szablonu i nie zmienia istniejących stron klientów.
Struktura paczki ZIP
Paczka do importu w panelu zawiera archive.json, źródła GS Loom w theme/ oraz dodatkowe zasoby w assets/, jeśli szablon ich używa. Możesz spakować te elementy bezpośrednio w głównym katalogu ZIP-a albo umieścić je w jednym wspólnym folderze:
noir-explorer/
├── archive.json
├── theme/
│ ├── loom.json
│ ├── layout/
│ ├── templates/
│ ├── sections/
│ ├── blocks/
│ ├── config/
│ └── locales/
└── assets/
└── blog.cssFolder theme/ musi zawierać kompletny, poprawny szablon, w tym loom.json. Powyższe drzewo ilustruje układ paczki, a nie pełną listę plików szablonu. Nie dodawaj drugiego poziomu folderów otaczających paczkę ani plików spoza jej struktury, takich jak .DS_Store czy __MACOSX.
Co zawiera archive.json
archive.json opisuje format archiwum i konfigurację produktu w GrowSite. Jest osobnym plikiem obok theme/; nie zastępuje manifestu theme/loom.json ani plików schema sekcji i bloków.
Przykład dla szablonu Noir Explorer:
{
"format": "gs-loom-archive",
"version": 1,
"configuration": {
"key": "noir-explorer",
"name": "Noir Explorer",
"version": "1.0.0",
"tier": "basic",
"supports_blog": true,
"price_cents": 0,
"default_settings": {},
"schema": {}
}
}| Pole | Znaczenie i wymagania |
|---|---|
format |
Wymagane: gs-loom-archive. |
version |
Wersja formatu archiwum: 1. |
configuration.key |
Wymagany klucz identyczny z kluczem w theme/loom.json: 1–40 znaków, pierwsza mała litera, dalej małe litery, cyfry lub myślniki. |
configuration.name |
Wymagana nazwa produktu, maksymalnie 200 znaków. |
configuration.version |
Wymagana wersja produktu, maksymalnie 30 znaków. Przygotowując wydanie, ustaw ją zgodnie z wersją w loom.json. |
configuration.tier |
Wymagany poziom: basic, plus albo premium. |
configuration.supports_blog |
Wymagane true lub false, zgodnie z obsługą bloga w szablonie. |
configuration.price_cents |
Wymagana cena w centach: liczba całkowita od 0 do 10000000. 0 oznacza szablon bezpłatny. |
configuration.default_settings |
Wymagane ustawienia domyślne produktu; {} oznacza brak dodatkowych wartości. |
configuration.schema |
Opcjonalna konfiguracja schema produktu; można pominąć lub użyć {}. Nie zastępuje plików .schema.json szablonu. |
Przygotowanie i błędy importu
Najłatwiej zacząć od GrowSite Skeleton ZIP, który zawiera archive.json. Launch Theme ZIP zawiera źródła do pracy lokalnej: przed importem przez panel trzeba przenieść zawartość katalogu szablonu do theme/ i dodać obok prawidłowy archive.json.
| Komunikat | Co sprawdzić |
|---|---|
Unsupported archive path |
Sprawdź układ folderów i obecność dokładnie jednego archive.json w głównym katalogu paczki. Folder otaczający jest rozpoznawany na podstawie tego pliku. |
Configuration does not match the Loom manifest |
Ujednolić configuration.key i klucz w theme/loom.json. |
GS Loom validation failed |
Popraw źródła szablonu zgodnie ze szczegółami błędu kompilatora. |
Duplicate archive entry |
Usuń zduplikowane ścieżki, również zapisane raz z /, a raz z separatorem Windows. |
Limit przesyłanego ZIP-a wynosi 24 MiB. Archiwum może zawierać do 5000 wpisów, łącznie do 48 000 000 bajtów po rozpakowaniu i do 25 000 000 bajtów na plik. Dowiązania symboliczne oraz segmenty ścieżek . i .. są odrzucane.
Instalacja, sprawdzanie i aktualizacja
Uruchamiaj z głównego katalogu repozytorium:
npm run loom:import -- /absolute/path/my-theme
npm run themes:build
npm run themes:check
npm run loom:test
npm run themes:testNastępnie w katalogu api:
php artisan themes:sync --activateNa końcu przebuduj panel i renderer:
npm run build:customer
npm run build:renderer--activate aktywuje nowe produkty. Synchronizacja zachowuje ceny i status już istniejących produktów. Nie aktualizuje treści stron klientów.
Do kolejnego wydania zwiększ wersję manifestu i użyj:
npm run loom:update -- /absolute/path/my-theme
npm run themes:buildAktualizacja nie może usuwać używanych definicji sekcji, bloków, szablonów stron ani identyfikatorów ustawień; typy dotychczasowych ustawień muszą pozostać zgodne. Nie jest to pełna analiza wszystkich zmian wyglądu: usunięcie warunku lub zmiana HTML nadal może zmienić prezentację zapisanej strony. Sprawdź istniejące dokumenty przed wdrożeniem.
themes:build przebudowuje rejestry po bezpośredniej edycji źródeł w repozytorium. Nie zastępuje kontroli kompatybilności loom:update.
Kontrola przed wydaniem
Sprawdź nowe i wcześniej zapisane strony. Zweryfikuj pusty tekst, zero, wyłączony checkbox, bogaty tekst, linki, dodanie i kolejność bloków, blok statyczny, mobile i SSR. Zmiana ustawienia ma być widoczna w podglądzie i po ponownym odczycie z API.
Testy projektu:
npm run loom:test
npm run themes:test
npm run build:renderer
node --test scripts/paylio-renderer.test.mjs scripts/theme-renderer.test.mjsW api:
php artisan test --compact --filter=loom_theme_settings
php artisan test --compact tests/Feature/LoomDocumentTest.phpNajczęstsze problemy
| Komunikat lub objaw | Co sprawdzić |
|---|---|
expected one schema |
Dokładnie jeden prawidłowy blok schema w każdej sekcji i bloku |
Unknown setting |
Literówka w ID albo brak deklaracji pola |
Invalid range |
Liczbowe min/max/default i dodatni step |
| Brak bloku na liście | Targeting rodzica, prywatna nazwa, presets |
| Brak produktu w katalogu | catalog, home.json, build i synchronizacja API |
| Klucz zamiast tłumaczenia | Nazwa pliku, zagnieżdżenie klucza i defaultLocale |
| Nieaktualny rejestr | Uruchom themes:build i sprawdź wygenerowane zmiany |
| Nieobsługiwany plik | Podkatalog, plik binarny lub JavaScript w paczce |
Import źródeł z terminala wymaga dostępu do repozytorium. Import ZIP w panelu jest dostępny dla uprawnionych administratorów; nie jest publicznym procesem zgłoszenia do marketplace. Zachowuj wersję źródeł i artefakty wdrożenia, żeby móc przywrócić poprzednie wydanie wraz z rejestrami.