ecommerce

Catalogo prodotti

Scheda prodotto e-commerce con varianti (size/color/material), galleria immagini multi-foto + zoom, prezzo base+listino+offerta, gestione stock per variante, SEO meta + breadcrumb, schema.org Product per Google Shopping.

Hero Catalogo prodotti

Cosa fa questo modulo

Modulo «Catalogo prodotti»: anagrafica completa del catalogo e-commerce con scheda prodotto ricca (varianti combinabili, galleria immagini, prezzo dinamico, stock per SKU, SEO) — fondazione del flusso di vendita prima del carrello #8318 e checkout #8319/#8324. Modello dati: tabella `products` (id, slug univoco SEO-friendly, nome, descrizione_breve max 300char per liste/card, descrizione_lunga rich-text con editor TinyMCE/Quill per pagina dettaglio, categoria_id FK gerarchica multi-livello, brand_id FK nullable, sku_base padre, codice_ean/gtin per Google Shopping feed, prezzo_listino_cents (PVC pubblico), prezzo_base_cents (default vendita), prezzo_offerta_cents nullable + offerta_da/offerta_a per countdown, prezzo_costo_cents per calcolo margine admin, iva_aliquota (4/10/22 IT default), unita_misura (pz/kg/m/h/lic), peso_grammi + dimensioni_cm (LxPxH) per calcolo spedizione, status enum draft/published/archived, visibile_dal/visibile_al per pubblicazione schedulata, featured_bool per homepage carosello, in_evidenza_ordine int per sort, gestisce_stock_bool, stock_totale_cache (calcolato da somma varianti per query rapide listing), min_order_qty/max_order_qty per quantità acquistabili, metadata JSON per campi custom-business (es. anno produzione, paese origine, certificazioni), seo_title/seo_description/seo_keywords/og_image_url per SEO+social share, schema_org_json già pre-renderizzato per inject `<script type="application/ld+json">` su pagina dettaglio, created_at/updated_at/deleted_at soft-delete). Tabella `product_variants` (id, product_id FK cascade, sku univoco globale, ean nullable, combinazione_attributi JSON `{"size":"L","color":"red","material":"cotton"}` per dedup, prezzo_override_cents nullable se variante ha prezzo diverso da base, stock_quantita int, soglia_riassortimento per alert admin, peso_grammi + dimensioni_cm override se variante con peso diverso, immagine_id principale FK ad attachment per variante-specifica (es. swatch color), barcode, posizione int per ordering, attivo_bool per disattivare combinazione esaurita senza eliminarla, created_at/updated_at). Tabella `product_attributes` (id, nome `Taglia`/`Colore`/`Materiale`, slug `size`/`color`/`material`, tipo enum `select`/`color_swatch`/`size_grid`/`material_swatch`/`text`/`number`, ordine_visualizzazione, obbligatorio_bool, filtrabile_bool per usare in filtri listing catalogo). Tabella `product_attribute_values` (id, attribute_id FK, valore `L`/`Rosso`/`Cotone bio`, slug, color_hex per swatch UI `#ff0000`, image_url per swatch material/pattern, ordine). Tabella pivot `product_variant_attribute_values` (variant_id, attribute_value_id) per relazione N-N combinazioni. Tabella `product_images` (id, product_id FK, variant_id nullable FK (immagine specifica per variante color), path_originale (file storage S3/local), path_thumb_150/path_medium_600/path_large_1200/path_zoom_2400 per responsive+performance generate da queue ImageManipulation Intervention, alt_text obbligatorio per accessibility+SEO, ordine int (drag-reorder admin), is_principale_bool, mime_type, dimensioni KB, dominant_color per skeleton loading, created_at). Tabella `product_categories` (id, parent_id FK self per albero gerarchico ricorsivo, nome, slug, descrizione SEO per pagina categoria, immagine_url cover, banner_url top, posizione int per sort siblings, depth cached, lft/rght nested-set per query subtree veloci o `kalnoy/nestedset` package, attiva_bool, seo_title/description/keywords, conta_prodotti_cache per badge count navigation), tabella `product_brands` (id, nome, slug, logo_url, descrizione, sito_web_url, attivo_bool) opzionale per marketplace multi-brand. Tabella `product_tags` (id, nome, slug, colore_hex per badge UI) + pivot `product_tag` per tagging trasversale (`novità`, `bestseller`, `eco-friendly`, `made-in-italy`) usabile in filtri listing. Combinazione varianti: matrice generata da admin con UI «seleziona attributi attivi per prodotto» (es. taglia [S,M,L,XL] + colore [rosso,blu,nero] = 12 varianti auto-generate, admin può disattivare combinazioni impossibili tipo «XL rosso esaurito»), bulk-edit prezzo/stock su varianti selezionate (mass-update tipo «aumenta 10% tutti i prezzi delle varianti L»). Prezzo dinamico per variante: risoluzione cascade `variant.prezzo_override → product.prezzo_offerta_attivo → product.prezzo_base`, badge sconto auto-calcolato `((listino-offerta)/listino*100)` rounded, countdown offerta con `offerta_a` timestamp (UI mostra «Termina tra 2g 14h 32m»), prezzo per quantità tier configurabile (`buy 3 = -10%, buy 5 = -15%`) tabella `product_quantity_discounts` opzionale. Galleria immagini: upload multipla drag-drop admin con preview, ordinamento drag-reorder, set immagine principale per listing card vs immagine secondaria per hover, immagini variant-specific (cliente cambia colore → galleria swap a foto rosso), generazione thumbnail multi-size async via queue (`php artisan queue:work` con job `GenerateProductImageThumbnails`), lazy-loading native + LQIP (dominant_color blur placeholder), zoom hover desktop (Drift.js o equivalent leggero), swipe gallery mobile (SwiperJS), lightbox full-screen, alt-text obbligatorio per accessibility WCAG + SEO Google Images, watermark opzionale su upload per protezione copyright, formati WebP+AVIF auto-conversion per performance Core Web Vitals. Stock e disponibilità: per variante con `stock_quantita`, soglia_riassortimento per alert mail admin quando scende sotto threshold, soft-reserve da #8318 carrello (riserva soft 15min) per evitare oversell, badge UI dinamico `Disponibile`/`Solo 3 rimasti — affrettati!` (urgency marketing per stock<5)/`Esaurito — avvisami quando torna` (CTA email signup con tabella `product_restock_notifications` user_id+variant_id, trigger mail su update stock), preorder con campo `preorder_disponibile_dal` per accettare ordini con consegna futura, gestione «sempre disponibile» per prodotti digitali/servizi (`gestisce_stock=false`). Backend admin: CRUD prodotti con datatable Livewire #8327 (filtri categoria/brand/status/stock_basso/featured, search nome/sku/ean, bulk actions pubblica/archivia/duplica/elimina/export #8328, sort drag-and-drop per featured ordering), wizard creazione step (1.dati base+categoria 2.descrizione+immagini 3.prezzo+IVA 4.varianti+stock 5.SEO+pubblicazione) per UX guidata vs form gigante, duplica prodotto con `php artisan product:duplicate {id} --with-variants --with-images` per varianti tipo «stesso modello altro brand», import massivo CSV/Excel con mapping colonne UI tipo «mappa colonna SKU», export #8328 con filtri attivi, log #8330 audit modifiche prezzo/stock (compliance e troubleshooting), versioning descrizioni con history per rollback. Frontend cliente: **Listing catalogo** `/catalogo` e `/catalogo/{categoria-slug}` con filtri sidebar (categoria checkbox tree, brand checkbox, range prezzo slider, attributi taglia/colore/materiale come facet count «Rosso (12)», disponibilità in-stock toggle, tag novità/sale, rating media stelle se #8332 recensioni), sort dropdown (popolarità, prezzo asc/desc, novità, sconto%, rating), grid responsive 4-col desktop / 2-col tablet / 1-col mobile, card prodotto con immagine principale + hover secondary + nome + brand + prezzo (listino barrato + offerta evidenziato + badge -X%) + rating + quick-view modal senza navigare + quick-add-to-cart con select variante inline, paginazione infinite-scroll o classica con SEO `<link rel="next">`, breadcrumb categoria gerarchico, banner top categoria, conteggio totale risultati, no-results state con suggerimenti. **Pagina dettaglio** `/prodotto/{slug}` con galleria immagini sticky-left con zoom+lightbox+swipe mobile, info-box destro (breadcrumb, nome H1, brand link, rating stars + count link recensioni, prezzo con sconto + risparmio €, selezione varianti via attribute selector (color swatch + size pill clickable, dropdown se molti valori, disabilita combinazioni esaurite con tooltip), quantity input +/- con validazione min/max, CTA grande «Aggiungi al carrello» #8318 con feedback drawer slide-in, CTA secondario «Wishlist» #8333 + «Confronta» #8334 + «Condividi»), tab orizzontali sotto («Descrizione» rich-text, «Specifiche tecniche» tabella attributi, «Recensioni» #8332, «Spedizioni e resi» policy reusable, «FAQ prodotto» #8335), sezione «Prodotti correlati» (stessa categoria) + «Spesso acquistati insieme» #8336 cross-sell + «Visualizzati di recente» da cookie, schema.org Product completo (name, image, description, sku, brand, offers con price/priceCurrency/availability/priceValidUntil, aggregateRating) per Google rich snippets + Google Shopping merchant feed automatico via `php artisan products:export-google-feed` XML/CSV, breadcrumb schema.org, Open Graph + Twitter Card meta per share social belli. SEO avanzato: URL slug univoco gerarchico opzionale (`/catalogo/abbigliamento/magliette/{slug-prodotto}` o flat `/prodotto/{slug}` per evitare URL fragili a riorganizzazione categorie), canonical URL su varianti (variante non ha URL proprio, solo query param `?variant=sku-l-rosso` con canonical alla pagina padre per evitare duplicate content), sitemap.xml auto-generata `php artisan sitemap:generate` con priority differenziata, hreflang multi-lingua se #8337 i18n attivo, schema.org Product+BreadcrumbList+Organization, structured data testabile con Google Rich Results Test, meta description auto-generata da descrizione_breve se non override custom, alt-text immagini per Google Images traffic, JSON-LD Product+Offer per Google Shopping free listings. Performance: cache prodotto serializzato con tag `product:{id}` + `category:{id}` per invalidazione granulare su update, indexing Algolia/Meilisearch opzionale #8338 per search istantanea fronted+typo-tolerant, CDN immagini Cloudflare/Bunny per delivery globale, lazy-load gallery secondaria, prefetch hover su card listing per perceived speed, Core Web Vitals LCP <2.5s con immagini ottimizzate+critical CSS+font-display swap. API REST/GraphQL: `GET /api/products` listing paginato con filtri/sort/search query params, `GET /api/products/{slug}` dettaglio completo con varianti+immagini+attributi+correlati, `GET /api/categories` albero gerarchico, `GET /api/products/search?q=` con search engine, `GET /api/variants/{sku}/stock` check disponibilità real-time pre-add-cart, supporto headless commerce (frontend Nuxt/Next/mobile React Native separato da Laravel backend), webhook outbound su create/update/delete prodotto per sync ERP/PIM esterno tipo Akeneo/Pimcore. Integrazione marketplace: export feed Google Shopping (`php artisan products:export-google-shopping`), Facebook Catalog (`products:export-facebook-catalog`), Amazon SP-API listing sync opzionale, eBay listing sync opzionale, tabella `product_external_mappings` per tracciare ID esterno per piattaforma + last_sync timestamp + status. Casi d'uso workspace: Footility (catalogo moduli marketing — questo seeder stesso è un mini-catalogo con prezzo+durata+categoria, evolvibile a UI commerciale completa con varianti tipo «Carrello base / Carrello Pro AI / Carrello Enterprise»), Klabhouse (catalogo corsi+merchandise scolastico con varianti taglia per t-shirt e durata per corsi), Holiday Self Drive (catalogo veicoli noleggio con varianti modello+anno+optional GPS/seggiolino + galleria foto multi-angolo), gestionali (catalogo licenze software con varianti utenti/durata/supporto), the-body-code/realpilates (catalogo pacchetti lezioni con varianti durata+frequenza+formula gruppo/individuale), mscarichi (catalogo servizi sgombero con varianti volume m³+urgenza), prontointervento (catalogo interventi tecnici con varianti orario+specializzazione). Differenza da WooCommerce/Shopify: qui catalogo leggero Laravel-native senza overhead full-platform (no plugin marketplace, no checkout proprietario), tagliato per business model misti workspace (servizi+prodotti+digitali+booking insieme), integrabile con #8318 carrello e #8319/#8324 checkout senza vendor lock-in, prezzo+performance favorevoli per cataloghi <10k SKU. Estensioni future: configuratore prodotto avanzato (es. PC su misura con dipendenze CPU↔MB↔RAM), prodotti bundle/kit (acquista 3 items insieme con sconto), product personalization (cliente carica logo per stampa custom), AR/3D preview con `<model-viewer>` per prodotti fisici visualizzabili in casa, AI product description generation da specifiche tecniche + tono brand, AI image background removal automatico per studio-look uniforme, AI smart cropping per varianti immagine multi-formato, AI similar product suggestion via embeddings vettoriali, A/B test prezzo dinamico per ottimizzare conversione, dynamic pricing per orario/domanda/scorte tipo airlines, gift wrapping option a checkout, configurabile minimum order amount per categoria/brand, dropshipping integration con auto-forwarding ordine a fornitore. Comandi artisan: `php artisan product:duplicate {id}`, `php artisan products:import {file.csv} --update-existing`, `php artisan products:export {--format=csv|xml|json}`, `php artisan products:export-google-feed`, `php artisan products:regenerate-thumbnails {--missing-only}`, `php artisan products:recompute-stock-cache`, `php artisan products:cleanup-archived {--older-than-days=365}`, `php artisan products:check-broken-images`, `php artisan products:rebuild-search-index` (re-index Algolia/Meilisearch). Costo: 1 giorno setup migration `products` + `product_variants` + `product_images` + `product_categories` + `product_attributes`/`_values` + pivot + indexing, 1 giorno admin CRUD wizard 5-step + datatable filtri + bulk actions + duplica + import/export CSV, 0.5 giorno generazione matrice varianti da attributi selezionati + bulk-edit prezzo/stock, 0.5 giorno upload immagini drag-drop + ordinamento + queue thumbnails Intervention + WebP conversion, 0.5 giorno stock management con soft-reserve carrello + alert riassortimento + restock-notify cliente, 1 giorno frontend listing con filtri sidebar facet + sort + grid + card quick-view + paginazione, 1 giorno frontend dettaglio con galleria zoom+lightbox + variant selector swatch + tab descrizione/specifiche/recensioni + correlati, 0.5 giorno SEO meta + schema.org Product+JSON-LD + sitemap + canonical varianti, 0.5 giorno API REST per headless + webhook outbound update, 0.5 giorno export feed Google Shopping + Facebook Catalog + integrazione marketplace base, 0.5 giorno testing flussi (variant matrix, stock edge cases multi-tab oversell, immagini upload+thumbnails, SEO snippet validation, performance LCP, accessibility a11y screen reader gallery). Dipendenze: Intervention/Image per thumbnails, kalnoy/nestedset per categorie gerarchiche (o nested-set custom), Algolia/Meilisearch opzionale per search avanzata, storage S3/Spaces per immagini in prod, queue worker per generazione async thumbnails, prerequisito per #8318 carrello (varianti = `purchasable_type=ProductVariant`), prerequisito per #8319 checkout (Order line items = snapshot variant), opzionale #8327 datatable admin, opzionale #8328 export, opzionale #8330 audit log modifiche prezzo, opzionale #8332 recensioni, opzionale #8333 wishlist, opzionale #8336 cross-sell, opzionale #8338 search avanzata, opzionale #8331 mail restock-notify.

Esempi d'uso

  • ecommerce

Demo correlate

Disponibile nei pacchetti