Come importare prodotti magento2

Come importare prodotti magento2

…importare prodotti magento2…case study

 

 

In questi giorni mi sono imbattuto nelle migrazione da magento1 a magento2 e come importare prodotti magento2. Sintetizzando gli step, il lavoro consisteva in questo:

  • esportazione prodotti magento1 su csv dal vecchio shop
  • migrazione delle configurazioni, spedizioni e metodi di pagamento da magento1 a magento2
  • restyle grafico
  • importare in magento2 circa 150mila prodotti semplici
  • creazione algoritmo di raggruppamento di prodotti semplici in 60mila prodotti configurabili taglia/colore
  • sviluppo di una dashboard con laravel per la lettura di barcode con controllo presenza a database e possibilità di fare una insert su magento2

 

Conoscendo bene magento1 e non magento2 immaginavo di trovare qualche problema che avrebbe allungato i tempi per il completamento della lavorazione e invece tramite l’utilizzo delle api di magento2 il lavoro si è dimostrato meno complesso del previsto.

 

In magento2 è stato eliminato il il protocollo XML-RPC mentre le Api REST e SOAP a livello funzionale sono equivalenti. In magento1 le api soap offrivano un livello migliore delle api rest. Altra funzione tra le novità di magento2 riguarda la gestione dei ruoli e gli utenti backend.

In magento2 non sono più distinti come nella versione 1.

I primi test li ho eseguiti con api rest tramite Postman (consiglio l’utilizzo di postman in quanto è open source e di facile utilizzo)

Come prima cosa è necessario settare il ruolo e la coppia di chiavi nel menù system -> Permission -> User Roles e in System -> Permissions -> All Users.

Ora è possibile generare il token tramite una chiamata CURL come nell’esempio sotto riportato.

curl -X POST "http://hostname/index.php/rest/V1/integration/admin/token" \
     -H "Content-Type:application/json" \
     -d '{"username":"mio_utente", "password":"mia_password"}'

 

 

Nell’ esempio le credenziali vengono passate come parametri in formato JSON, se necessario possiamo passare i parametri anche tramite altri formati come XML modificando il Contet-Type e il corpo della richiesta.

 

Per lo sviluppo ho utilizzato php e la libreria Client CURL ottengo il token per le richieste. Il token sarà simile a v8x430f98……….

<?php
function getAuthToken($hostname, $username, $password)
{
    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => "http://$hostname/index.php/rest/V1/integration/admin/token",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => json_encode(['username' => $username, 'password' => $password]),
        CURLOPT_HTTPHEADER => [
            "cache-control: no-cache",
            "content-type: application/json",
        ],
    ]);

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        throw new Exception($err);
    } else {
        return json_decode($response, true);
    }
}

Con il token ottenuto possiamo fare le richieste tramite PHP.  Esempio di codice:

<?php
    /**
     * @return array
     * @throws Exception
     */
    function curlGet($endpoint, $token)
    {
      $curl = curl_init();
      curl_setopt_array($curl, [
          CURLOPT_URL => $endpoint,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "GET",
          CURLOPT_HTTPHEADER => [
              "cache-control: no-cache",
              "authorization: Bearer " . $token,
          ],
      ]);

      $response = curl_exec($curl);
      $err = curl_error($curl);

      curl_close($curl);

      if ($err) {
          throw new Exception($err);
      } else {
          return json_decode($response, true);
      }
    }

    $response = curlGet(
      'http://hostname/index.php/rest/V1/customers/1',
      $token
    );

In conclusione se vi trovate nella necessità di interfacciarvi a magento2 consiglio di fare dei test e leggere la documentazione ufficiale al link devdocs.magento.com

Algoritmo…

Il csv riportava singolarmente tutti i prodotti ed era necessario ottenere un catalogo con  i prodotti in modalità configurabile. Per evitare di avere un catalogo con prodotti uguali ho realizzato uno script PHP che legge tutti i prodotti semplici dal csv, trova quelli con la radice comune (camicia elegante per esempio) e li raggruppa sotto un singolo prodotto configurabile ottenendo:

  • Prodotto padre configurabile (sku: camicia elegante)
    • variante blu: sku camicia elegante blu taglia M / camicia elegante blu taglia S / camicia blu taglia L 
    • variante bianca : sku camicia elegante bianca taglia M / camicia elegante bianca taglia S / camicia bianca taglia L 

 

L’intero progetto l’ho realizzato e testato in locale e caricato successivamente su vps dedicata filtrando il tutto con cdn cloudflare.

Se hai dubbi o necessiti di qualche consiglio non esitare a contattarmi commentando l’articolo o scrivendomi in privato.

 

Opzioni avanzate per i bordi Divi Builder

Opzioni avanzate per i bordi Divi Builder

Bordi Divi Builder.....era ora! Per chi, come me, utilizza Divi Builder per impaginare e gestire i contenuti nei propri siti wordpress consiglio di aggiornare Divi Builder alla versione 2.0.49 perchè, finalmente, sono state introdotte delle opzioni...

Importare prodotti in Magento con Magmi

Importare prodotti in Magento con Magmi

In questo articolo capirai come Importare prodotti in Magento con Magmi. Magmi è un modulo gratuito per shop su base Magento e permette, tramite CSV, di importare migliaia di prodotti in poco tempo. A differenza di altri strumenti Magmi lavora direttamente con il...

Opzioni avanzate per i bordi Divi Builder

Opzioni avanzate per i bordi Divi Builder

Bordi Divi Builder…..era ora!

Per chi, come me, utilizza Divi Builder per impaginare e gestire i contenuti nei propri siti wordpress consiglio di aggiornare Divi Builder alla versione 2.0.49 perchè, finalmente, sono state introdotte delle opzioni avanzate molto comode per la gestione dei bordi.

Ora è possibile aggiungere facilmente bordi personalizzati su tutti i moduli, tutte le sezioni e tutte le righe con una gestione semplificata tramite interfaccia nuova e intuitiva.

Con questo aggiornamento aumentano le possibilità offerta dal plugin Divi Builder garantendo un maggior controllo sull’aspetto delle proprie pagine e articoli wordpress.

Con l’interfaccia è possibile personalizzare completamente ogni singolo bordo. Dal colore, alla dimensione fino alla scelta di uno dei 9 stili (tratteggiato, punteggiato,ecc.)

È possibile aggiungere bordi ad un bordo, a due bordi, a tre o quattro margini ed è possibile regolare singolarmente gli stili di ogni bordo. Evidenziare il modulo dandogli un bordo “importante” su tutti e quattro i lati, o semplicemente dare un piccolo tocco di colore in alto o in basso.

Se stai cercando qualche ispirazione? 

Basta dare un’occhiata a alcuni dei progetti straordinari che il team di Divi Builder ha potuto creare usando queste nuove funzionalità. Questo il link , esempi

Ho riportato sotto due veloci esempi di utilizzo della gestione bordi  Divi Builder e il video originale dimostrativo in lingua inglese.

Lascia i tuoi commenti e condividi questa news. Se vuoi rimanere aggiornato iscriviti alla Newsletter in home page. Ciao!

Esempio 1

Esempio 2

In questo esempio ho utilizzato: Bordo Pieno con spesse 22 e stile Bordo Interno. Colore Blu.

Video dimostrativo in lingua Inglese

Importare prodotti in Magento con Magmi

In questo articolo capirai come Importare prodotti in Magento con Magmi. Magmi è un modulo gratuito per shop su base Magento e permette, tramite CSV, di importare migliaia di prodotti in poco tempo. A differenza di altri strumenti Magmi lavora direttamente con il...

Opzioni avanzate per i bordi Divi Builder

Bordi Divi Builder.....era ora! Per chi, come me, utilizza Divi Builder per impaginare e gestire i contenuti nei propri siti wordpress consiglio di aggiornare Divi Builder alla versione 2.0.49 perchè, finalmente, sono state introdotte delle opzioni...

Come importare prodotti magento2

importazione prodotti magento2 in un caso reale, come ho affrontato i vari step provenendo da magento1

Importare prodotti in Magento con Magmi

Importare prodotti in Magento con Magmi

In questo articolo capirai come Importare prodotti in Magento con Magmi.

Magmi è un modulo gratuito per shop su base Magento e permette, tramite CSV, di importare migliaia di prodotti in poco tempo.

A differenza di altri strumenti Magmi lavora direttamente con il database di Magento ed è di facile installazione.

Installazione di Magmi

  1. Scaricare Magmi dal sito ufficiale (qui)
  2. Scompattare il file zip e fare l’upload tramite FTP della cartella posizionandola nella cartella principale del vostro shop.
  3. Impostare i permessi di tutta la cartella e dei file contenuti a 705 (da shell linux chmod -R 705 magmi)
  4. Aprire il browser alla pagina http://www.miosito.it/magmi/web/magmi.php   (user e pass magmi:magmi)
  5. Se avete intenzione di importare categorie e immagini installate gli extra plugin scaricandoli da questo link (qui)
  6. Installare anche le utility che trovate allo stesso link utilizzando la stessa procedura

Magmi è pronto a lavorare ma è necessario metterlo al sicuro altrimenti chiunque visiterà il nostro negozio online potrà accedere alla pagina d’importazione. Per proteggere l’accesso creiamo un file .htaccess e inseriamolo nella cartella /magmi.

Un tool utile alla creazione del file .htaccess è fornito dal sito htaccesstools.com

Riporto sotto un esempio di file .htaccess (in questo caso ho creato una cartella di nome sec all’interno della cartella magmi)

ErrorDocument 401 default

 

AuthUserFile /home/sitomio/public_html/magmi/sec/.htpasswd

AuthName “MAGMI – Area Riservata”

AuthType Basic

Require valid-user

RedirectMatch ^/magmi/$ /magmi/web/magmi.php

Visitando il link http://www.sitomio.it/magmi/web/magmi.php il browser ci richiederà l’inserimento di utente e password.

Continua sotto la guida per Importare prodotti in Magento con Magmi

freccia-giu

La prima configurazione di Magmi

Per eseguire l’importazione il modulo magmi ha bisogno delle credenziali di accesso al database per questo come nell’immagine dovremmo inserire:

  • host
  • nome del database
  • nome utente
  • password
  • eventuale prefisso delle tabelle (per sicurezza quando installate magento o un altro tipo di cms utilizzate sempre un prefisso)

magmi database

 

I profili di Magmi

L’utilizzo dei profili di Magmi ci consente di avere impostazioni diverse in base a quello che dobbiamo importare.

Personalmente utilizzo sempre un minimo di due profili.

Uno per l’aggiornamento totale e un’altra per l’aggiunta esclusiva di nuovi articoli presenti nel CSV.

Allo stato vergine dopo l’installazione magmi visualizza il profilo di Default. Non lo tocco mai, soprattutto se devo fare dei test d’importazione, lo duplico con il pulsante Copy Profile and Switch.

Il bello dei profili è la possibilità di poterli gestire separatamente tramite dei cronjob. Ti spiego dopo come.

magmi profili

CSV Options

CSV Separator è il separatore di campi utilizzato nel file csv. Il punto e virgola(;) o la pipe (|) o la virgola (,)….

CSV Enclosure è il carattere che indica dove inizia e finisce il campo (potrebbero essere il doppio apice o le virgolette). Se per esempio il campo5 fosse il mio url nel csv sarebbe indicato così “ivanzaccaron.net”;

Headerless, utilizzare questo check quando il file csv non ha intestazioni.Le colonne saranno automaticamente nominate con col1,…..,colN. E’ necessario utilizzare il plugin Column Mapper per settare i nomi delle colonne al riferimento col1 -< ean ecc.)

Allow truncated lines, consente se attivo, di bypassare le linee troncate in fase di import

Malformed CSV è da utilizzare quando l’intestazione di colonna non è alla prima riga del nostro file. In questo caso al check si aprirà una campo dove inserire il numero di riga che fa riferimento all’intestazione di colonna.

I plugin

 

plugin magento

On the fly category creator/importer: crea, se non esiste, una categoria. Il controllo viene fatto controllando il nome, anche se questo è stato modificato di poco rispetto a quella salvato in Magento, viene creata una nuova categoria.

Image attributes processor: tramite questa funzionalità risulta possibilie specificare se le immagini debbano essere prese in locale (es: /var/www/html/nome/magmi/import/img) o da remoto, rinominare i nomi delle immagini, riscriverle o aggiungerle. Se si vuole associare ad un prodotto più immagini aggiungere nel CSV la colonna “mediagallery”.

On the fly indexer: rigenera gli indici al termine dell’importazione di ogni elemento.

Custom Options: crea un attributo personalizzato per uno specifico articolo.

Product Deleter: se nella colonna specifica il valore è a “1” elimina l’articolo in questione. Vengono eliminati anche i figli. L’intestazione di colonna deve essere magmi_delete.

Product Tags importazione tag dei prodotti

Tier price importer: importa quantità-prezzo di un prodtto (scrittura “quantità:prezzo”). Per fare ciò occorre aggiungere una colonna al nostro file CSV.

Column mapper: effettua la mappatura sui valori e risulta utile nel caso della replicazione del dato su più colonne (es: per immagine grande, piccola e thumb).

SKU Finder: genera lo sku automaticamente se non è presente la relativa colonna. E’ necessario pecificare su quali altri valori presenti nel CSV deve essere creato lo sku.

Default Values setter: permette di associare ad ogni elemento dei valori di default senza dover inserire necessariamente le relative colonne nel CSV (scrittura: “colonna1,colonna2”). Nota: il nome della colonna corrisponde all’id dell’attributo presente nel pannello amministrativo di Magento.

Magmi Import Limiter: utilizziamo per importare un numero limitato di elementi nel CSV. Per le prove è ottimo soprattutto quando abbiamo csv con migliaia di articoli.

Generic mapper: server per mappare dei valori di determinate colonne del CSV.

Value Replacer: effettua la sostituzione della riga ma la configurazione è complessa in quanto occorre specificare delle condizioni tramite espressioni regolari.

Value Trimmer for select/multiselect: da utilizzare per la creazione degli attributi non presenti nel menu a tendina.

Grouped Item processor: Creazione degli articoli raggruppati se non esistono. Possibilità di specificare come trattare i singoli prodotti.

Configurable Item processor: Crea gli articoli coonfigurabili se non esistono.

Cron Job Magmi

Molto utile per chi ha confidenza con la shell o tramite il pannello di impostazione del proprio hosting sono le operazioni pianificate cronjob. Con queste operazioni possiamo automatizzare tutto il processo di import e aggiornamento del nostro catalogo.

Vi riporto alcune righe per capire come impostare i crontab.

php <magmi_dir>/cli/magmi.cli.php -profile=”nomeprofilo” –mode=”create”

con questa riga diciamo al sistema operativo di eseguire lo script d’importazione per il profilo con il determinato nome e di eseguirlo in modalità Create

php <magmi_dir>/cli/magmi.cli.php -profile=”yourprofilename” -mode=”update”

con questa operazione il sistema eseguire lo script di aggiornamento per il determinato profilo in modalità aggiornamento (gli articoli nuovi non verranno creati).

Se ti è servita la guida su come  Importare prodotti in Magento con Magmi condividi o lascia un Mi piace.

Se hai bisogno di qualche informazione contattami e ti risponderò appena possibile.

Alla prossima! Ciao!

vpn mikrotik – Configurare Server OpenVPN

Cerchi una soluzione per attivare velocemente un server VPN Mikrotik? Dopo aver conosciuto in questi anni molti appassionati dell'hardware Mikrotik e aver aiutato "i nuovi" alla scoperta di questo device ho deciso di pubblicare una veloce guida da eseguire tramite...

Micro Editor per linux

Micro è un moderno editor molto intuitivo da utilizzare da terminale. Caratteristiche Micro Editor Semplice da usare La funzione numero uno di Micro è quella di essere facile da installare (è solo un binario statico senza dipendenze) e facile da usare. Altamente...

Esportare vmdk di una macchina virtuale

Ciao, se vuoi esportare vmdk della tua macchina virtuale su un'altra infrastruttura come Microsoft Azure, Aws, Proxmox.... sei nel posto giusto.Iniziamo da esportare vmdkSe la tua infrastruttura è più complessa o hai intenzione di migrare ma non sai come...

Configurare ufw firewall linux

Come configurare UFW Firewall Linux su Ubuntu. UFW è l'acronimo di Uncomplicated Firewall e consente di configurare un firewall su distro linux. E' stato concepito per semplificare la configurazione delle regole iptables. Inizialmente era disponibile solo...