- Di default usa la valuta configurata nelle Impostazioni generali
---
**Stock***(opzionale)*
- Campo: `number`
- Indica le unità disponibili in magazzino
- **Lasciare vuoto** = stock illimitato (il prodotto non esaurisce mai)
- Inserire `0` = prodotto esaurito (non acquistabile)
- Inserire un numero positivo (es. `50`) = scorte limitate
---
#### Sezione 3 — Status & Organization
**Status***(obbligatorio)*
- Campo: `select`
- Tre opzioni:
| Valore | Significato |
|--------|-------------|
| `DRAFT` | Bozza — il prodotto **non è visibile** nel negozio. Usalo mentre stai lavorando al prodotto. |
| `PUBLISHED` | Pubblicato — il prodotto **è visibile** nel negozio e acquistabile. |
| `ARCHIVED` | Archiviato — il prodotto è nascosto e non vendibile. Usato per prodotti discontinuati. |
**Consiglio:** inizia sempre con `DRAFT`, verifica tutto, poi cambia in `PUBLISHED`.
---
**Categories***(opzionale)*
- Campo: `checkbox multipli`
- Assegna il prodotto a una o più categorie del catalogo
- Le categorie aiutano i clienti a navigare il negozio
- Un prodotto può appartenere a più categorie contemporaneamente
- Se non hai ancora creato categorie, vai su http://localhost/admin/categories
---
#### Sezione 4 — Custom Attributes
**Attributes***(opzionale)*
- Campo: `JSON`
- Permette di aggiungere attributi personalizzati in formato JSON
- Gli attributi disponibili dipendono dal **Product Type** selezionato nella sezione 1
- Esempio per un prodotto di abbigliamento:
```json
{
"colore":"Rosso",
"taglie_disponibili":["S","M","L","XL"],
"materiale":"100% cotone",
"lavaggio":"30°C"
}
```
- Esempio per un prodotto elettronico:
```json
{
"marca":"Samsung",
"modello":"Galaxy S25",
"ram_gb":12,
"storage_gb":256,
"colori":["Nero","Bianco","Verde"]
}
```
> Il JSON deve essere valido: usa virgolette doppie per le chiavi, nessuna virgola finale nell'ultimo elemento.
---
#### Salvare il prodotto
Una volta compilati tutti i campi obbligatori, clicca **"Save Product"** (o "Create Product").
Se ci sono errori di validazione, il form li mostra in rosso accanto al campo corrispondente. I più comuni:
- Slug già usato da un altro prodotto → cambia lo slug manualmente
- Prezzo negativo → inserire 0 o un valore positivo
- JSON non valido negli attributi → controlla la sintassi
---
### 3c. Modifica Prodotto Esistente
1. Vai su http://localhost/admin/products
2. Trova il prodotto nella lista (usa la ricerca se necessario)
3. Clicca **"Edit"** sulla riga del prodotto
4. Modifica i campi desiderati
5. Clicca **"Save Product"**
Tutti i campi sono modificabili in qualsiasi momento.
**Cambiare lo status da DRAFT a PUBLISHED** è il modo per rendere il prodotto visibile nel negozio.
---
### 3d. Archiviare un Prodotto
L'archiviazione rende il prodotto invisibile nel negozio senza eliminarlo.
1. Dalla lista prodotti, clicca **"Archive"** sulla riga del prodotto
2. Oppure, entra in modifica e cambia lo Status in `ARCHIVED`
I prodotti archiviati non vengono eliminati: puoi ripristinarli in qualsiasi momento cambiando lo status in `PUBLISHED`.
> **Non esiste un'eliminazione definitiva** dall'interfaccia admin — l'archiviazione è l'operazione più "definitiva" disponibile.
---
### 3e. Immagini prodotto
La sezione **Images** appare in fondo alla pagina di modifica di un prodotto già salvato (non durante la creazione iniziale).
#### Formato consigliato
| Proprietà | Valore |
|-----------|--------|
| **Proporzione** | **1:1 (quadrata)** |
| **Risoluzione minima** | 800 × 800 px |
| **Risoluzione consigliata** | 1200 × 1200 px |
| **Formati accettati** | JPEG, PNG, WebP |
| **Dimensione massima** | 5 MB per file |
Il negozio mostra sempre le immagini in formato quadrato ritagliando al centro. Se carichi un'immagine rettangolare, le parti ai lati (o in alto/basso) verranno tagliate e non saranno visibili.
> **Esempio:** una foto 1600×900 px (orizzontale) verrà mostrata ritagliata al centro come un quadrato 900×900 px — i bordi sinistro e destro spariranno.
#### Come aggiungere immagini
1. Crea e salva il prodotto → il sistema ti reindirizza alla pagina di modifica
2. Scorri fino alla sezione **"Images"** in fondo al form
3. Clicca **"Aggiungi immagini"** e seleziona uno o più file
4. Le anteprime appaiono subito nella griglia — il preview è quadrato, identico a come l'immagine apparirà nel negozio
5. Puoi caricare più immagini: la **prima** è quella mostrata nelle card del catalogo
#### Come eliminare un'immagine
Passa il mouse sopra l'anteprima e clicca il pulsante **✕** che appare nell'angolo in alto a destra.
---
## 4. Tipi di Prodotto (Product Types)
**URL:** http://localhost/admin/product-types
I Product Types definiscono la struttura degli attributi custom per categoria di prodotti. **Vanno creati prima dei prodotti.**
### Cos'è un Product Type
Un tipo di prodotto è essenzialmente uno schema che dice: "i prodotti di questa categoria hanno questi attributi". Esempio:
- Tipo **"Abbigliamento"** → attributi: colore, taglia, materiale
- Tipo **"Elettronica"** → attributi: marca, RAM, storage, display
- Tipo **"Libri"** → attributi: autore, ISBN, editore, pagine
Usa il filtro per stato per vedere solo le recensioni che richiedono attenzione (es. solo `PENDING`).
### Moderare una recensione
Ogni recensione mostra:
- **Prodotto** a cui è riferita
- **Valutazione** in stelle (1-5)
- **Testo** della recensione
- **Cliente** che l'ha scritta
- **Data**
Azioni disponibili:
- **Approve** → rende la recensione visibile nel negozio
- **Hide** → nasconde la recensione (non viene eliminata)
- **Reset to Pending** → riporta la recensione in stato di attesa
**Best practice:** approva rapidamente le recensioni PENDING per mantenere il negozio attivo e credibile. Nascondi solo recensioni con contenuto offensivo o spam.
---
## 9. Utenti Admin
**URL:** http://localhost/admin/admin-users
Gestisci gli account che possono accedere al pannello admin.
### Ruoli disponibili
| Ruolo | Permessi |
|-------|---------|
| `ADMIN` | Accesso completo al pannello, gestione prodotti/ordini/clienti |
| `OWNER` | Come ADMIN, più la possibilità di gestire altri admin e le impostazioni di sistema |