SEO & E-Commerce, una chiacchierata con Francesca Galasso

Questa settimana abbiamo deciso di proporre un’intervista estremamente ricca di contenuti, sia per quel che riguarda l’attività SEO che per l’E-Commerce. Per far questo, abbiamo deciso di scambiare quattro chiacchiere con una delle migliori professioniste del settore: Francesca Galasso. Francesca è una consulente specializzata in vari settori come appunto la SEO, il Web Marketing, i …

Le migliori estensioni gratuite per Joomla di cui non dovresti fare a meno

Le migliori estensioni gratuite per Joomla di cui non dovresti fare a meno

Joomla è uno dei più popolari sistemi di gestione dei contenuti (CMS).  Nel mondo è utilizzato per oltre 30 milioni di siti, con più di 200.000 utenti e un numero infinito di estensioni utili quasi per ogni scopo. Il social networking, i servizi di commento avanzati, i servizi di checkout, gli album fotografici, insomma la lista è davvero lunga perché ad oggi ne risultano circa 5000!

Joomla inoltre ha il sostegno da parte della comunità open source e il costante afflusso di menti creative che offrono i loro software gratuitamente.

Se hai deciso di realizzare il tuo nuovo sito web con Joomla ma hai qualche dubbio, inizia con il piede giusto e scegli il nostro hosting Joomla. Un servizio completo di assistenza tecnica e con il CMS già installato e pronto all’uso.

Estensioni gratuite per Joomla

Ma come si fa ad orientarsi attraverso tutte le estensioni esistenti? Come si fa a scegliere le migliori estensioni gratuite per Joomla al fine di riuscire a trovare quelle che possono davvero aumentare la user experience di questo CMS?

Ecco alcune delle estensioni gratuite di Joomla di cui non dovresti fare a meno.

SP Page Builder

SP Page Builder è un estensione che può cambiare radicalmente lo stile di Joomla per quello che riguarda il web design. Si tratta di un creatore di pagina “drag and drop” che si propone di aiutare a creare siti personalizzati in pochi minuti invece che in tempi più lunghi.

Ha un interfaccia intuitiva e inoltre uno dei punti di forza di questo componente è la vasta selezione di layout.

JCE

JCE è un editor What You See Is What You Get” ossia ottieni quanto vedi, molto popolare e potente. Ha più funzioni rispetto a TinyMCE che è un altro editor sempre per Joomla.

Se si decide di acquistare una licenza Pro di JCE si ha accesso alla funzione “add-on” che consente di inserire file multimediali o file da scaricare e molto altro ancora.

JCE Editor per Joomla

EasyBlog

EasyBlog è un applicazione utile quando si consente a più persone di scrivere all’interno del proprio blog. Questo componente può aiutare a gestire con facilità più utenti.

Phoca Commander

Phoca Commander è un Folder Manager per Joomla che dispone di quasi tutte le caratteristiche di gestione dei file: copiare, spostare, rinominare ed eliminare file.

Estensioni Joomla Phoca Commander

RS Firewall

RS Firewall è un plugin Firewall per una massima sicurezza del sito web. Questo componente commerciale offre protezione di sicurezza contro: XSS, RFI, CRLF, CSRF, Base64, Code Injection e SQL Injection.

Estensioni Joomla RSFirewall

Quick Add to Menu

Quick Add to Menu semplice ma estremamente utile come plugin, serve a creare una voce di menu per gli articoli al momento della creazione, perfettamente integrata con l’article manager di Joomla presente di default.

Aggiunge una selezione di menu per la creazione dell’articolo. Selezionando un menu e salvando, l’articolo verrà aggiunto al menu selezionato o come primo o come ultimo elemento.

Estensioni Joomla Quick Add to Menu

Akeeba Backup

Mettere un sito online senza prevedere un backup è come viaggiare in auto senza cinture, in caso di incidente sono davvero dolori!

Possono esserci varie soluzioni di backup sia di sistema che di terze parti ma Akeeba Backup è una soluzione perfetta per Joomla. Infatti non a caso questa estensione è la componente di backup open-source più utilizzato per il CMS.

La sua missione è semplice: creare un backup del sito web che possa essere ripristinato in qualsiasi server predisposto per Joomla. Questo lo rende ideale non solo per i backup ma anche per i trasferimenti del sito e/o distribuzione di siti a server secondari o verso quelli dei clienti.

Estensioni Joomla Akeeba Backup

Akeeba Backup crea un backup completo del sito all’interno di un unico archivio. L’archivio contiene tutti i file, uno snapshot del database ed un installer simile a quello standard di Joomla.

Il processo di backup e di ripristino utilizza funzioni AJAX per evitare il timeout del server, anche quando questo contiene siti di notevole dimensione. In alternativa, è possibile effettuare una copia di backup del solo database, oppure dei file.

Akeeba Backup è la soluzione di backup open source per Joomla affidabile e facile da usare. 

In alternativa puoi valutare una soluzione più professionale come il cloud backup, un servizio che ti consente di avere una copia nel cloud di Amazon sia delle pagine che del database in caso di problemi al tuo sito web. L’eventuale restore avviene direttamente dal pannello di controllo in italiano mentre il backup è automatizzato e programmabile.

Universal AJAX Live Search

Hai presente in quei siti web (anche su Google) dove mentre digiti la parola da ricercare, compaiono immediatamente i risultati? Ebbene si tratta di una funzionalità tipica offerte mediante AJAX, l’acronimo di “Asynchronous JavaScript and XML”, una tecnica di sviluppo software per la realizzazione di applicazioni web interattive.

Estensioni Joomla Universal Ajax Live Search

Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e server, che consente l’aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell’utente.

Universal AJAX Live Search è un’estensione di ricerca ad alte prestazioni per Joomla che consente di avere un motore di ricerca avanzato sul proprio sito web. Questa estensione può cercare sia moduli che articoli e lo fa particolarmente bene. Inoltre i risultati della ricerca vengono visualizzati graficamente, quindi è molto semplice da utilizzare.

JSN PowerAdmin

JSN PowerAdmin consente gestire al meglio il contenuto del sito web, come la modifica del menu, dei componenti e dei moduli con un’interfaccia all-in-one.

Sostanzialmente ti fa risparmiare tempo trascinando gli elementi senza dover controllare il frontend, tutto semplicemente in pochi click.

Estensioni per la SEO

Infine parlando di SEO, attività che rappresenta sempre un grosso problema per qualsiasi sito web, ci sono due estensioni che consiglio di installare per migliorare il posizionamento e di conseguenza portare più traffico nel tuo sito web.

sh404SEF

La prima estensione gratuita per gestire alcune delle attività SEO con Joomla è sh404SEF. La configurazione di questa estensione è come un puzzle e permette di avere un sito web completamente attrezzato in chiave SEO con un solo clic.

Jsitemap

L’altra è Jsitemap, un generatore di sitemap per Joomla che è possibile anche integrare con Google Webmaster Tools e Google Search Console in modo da ottimizzare il tuo sito per i motori di ricerca.

Le migliori estensioni di Joomla: conclusioni

Ovviamente questo elenco non può e non vuole essere esaustivo. Sono talmente tante le estensioni che è praticamente impossibile stilare un elenco puntuale e completo. Posso solo dire che queste sono attualmente quelle che reputo le migliori estensioni e che non dovrebbero mancare in un sito web gestito mediante Joomla.

Ricordo comunque che non bisogna mai esagerare con l’installazione di plugin, componenti ed estensioni anche se sono gratuiti perché non si fa altro che appesantire il CMS oltre ad andare incontro a ulteriori problemi di sicurezza.

4 suggerimenti di design per una campagna di email marketing

4 suggerimenti di design per una campagna di email marketing

L’efficacia di una campagna di email marketing non si basa solo sulla qualità del contenuto o sulla strategia. Anche l’occhio vuole la sua parte, se l’aspetto delle tue comunicazioni non è d’impatto rischi di finire nello spam.

E tu non vuoi questo, vero? No. Vuoi fidelizzare i tuoi potenziali clienti, impressionarli e conquistarli. In altre parole, desideri raggiungere i tuoi obiettivi trasformando il messaggio in una piccola opera d’arte.

Ecco perché ho selezionato per te 4 suggerimenti di email design per creare una campagna di successo. Scopriamoli.

Per le tue campagne di email marketing ti consigliamo di utilizzare un cloud server opportunamente configurato dai nostri sistemisti. In questo modo avrai la gestione totale dei tuoi messaggi promozionali con la garanzia di un sistema sicuro ed affidabile!

La leggibilità

Devi scegliere con cura il font delle tue comunicazioni, devi decidere quale abito far indossare alle tue parole.

Quale font scegliere per il tuo blog?Il mio consiglio? Usa caratteri eleganti e facili da leggere, soprattutto sugli schermi dei dispositivi mobile. Ti dico di più: mantieniti entro 13 o 14 punti tipografici.

A tua disposizione hai Arial, Helvetica, Georgia, Times New Roman e Verdana. Sono i più utilizzati e affidabili, considerando che su alcuni client di posta molti font non sono supportati.

Hai selezionato il font? Bene. Ora dividi il testo in paragrafi. Assicurati che non siano troppo lunghi e tra l’uno e l’altro lascia lo spazio bianco. Le persone non amano i muri di parole, preferiscono far respirare la mente e lo sguardo.

In questo modo i lettori possono decidere anche se portare a termine l’azione espressa nella call to action e atterrare sulla landing page. Se non vuoi perdere il tuo potenziale cliente, prima della fine della lettura, evita elenchi di link e sfondi che non creano un buon contrasto con il testo.

Le immagini

L’email design passa anche per l’attenzione dedicata alle immagini. Attraverso le foto gli utenti comprendono immediatamente il tono e l’idea alla base del messaggio. Troppi elementi visual però rischiano di attivare i filtri anti spam.

Una buona regola da seguire? Accompagna le immagini al testo, che deve essere almeno di 500 caratteri. Ancora una cosa: comprimi le foto in modo che la email sia leggera da aprire. Ricorda che la virtù sta nel mezzo: ridimensiona il visual, ma senza perdere troppa qualità.

La call to action

Questi elementi servono a mettere in pratica la call to action. Esortano all’azione. Ad esempio, scaricare un ebook, o acquistare un prodotto/servizio.

aumentare le vendite | incrementare le venditePer questo motivo i pulsanti che indirizzano verso pagine di atterraggio devono essere ben visibili. Ma non solo. Costruiscili in HTML, così verranno visualizzati in modo corretto in tutte le caselle di posta elettronica.

Altro punto da non sottovalutare: le dimensioni. Non devono essere né troppo grandi, né troppo piccole: realizza bottoni di almeno 48 pixel. Inoltre, verifica che le persone riescano a sfiorare con comodità il bottone da cellulare. Per facilitare il movimento lascia lo spazio bianco necessario intorno al tasto.

Per quanto riguarda il colore della CTA, sfrutta una tonalità richiami il design della email, in particolar modo dell’header. Ovvero la parte in cui è presente il logo.

So cosa ti stai chiedendo: “Posso usare una foto al posto del call to action button?” Ti sconsiglio questa pratica perché se le immagini sono disattivate rischi di vanificare i tuoi sforzi. Inoltre il bottone ha un’efficacia diversa perché rappresenta un oggetto da cliccare, invita a un’azione chiara.

Il responsive

Come realizzare un sito responsive?Ultimo suggerimento di email design. Assicurati che i tuoi messaggi promozionali, ma credo tu l’abbia già intuito dai paragrafi precedenti, siano responsive. Quindi ottimizzati per smartphone e tablet.

Questa caratteristica è decisiva per una campagna davvero efficace. Con questa tecnica migliori la struttura, l’aspetto e la lettura delle tue comunicazioni.

E tu hai altri suggerimenti di email design?

Questi sono solo alcuni dei suggerimenti di email design che ho selezionato per te. Linee guida che possono essere utili per web designer o meno.

Ora lascio a te la parola. Tu hai qualche consiglio di email design per rendere più attraenti i tuoi messaggi? Lascia la tua risposta nei commenti e completiamo insieme questa lista.

10 idee marketing per San Valentino per il tuo E-Commerce

ecommerce-marketing-sanvalentino

1. Email ai clienti

Promuovere l’idea regalo perfetta, usare immagini accattivanti dei tuoi prodotti e ricordare ai tuoi clienti che San Valentino è dietro l’angolo, sono alcuni dei trucchi più utilizzati e efficaci. Diventa poi una buona idea dividere per sesso la tua lista di contatti email, in modo da poter creare una mail personalizzata in base anche al genere.

Dovrai inoltre muoverti per tempo, perché ricorda che i giorni più gettonati per fare acquisti per San Valentino sono il 5 e 6 Febbraio.

2. Invoglia i clienti con un post sul blog

Il blog nasce come strumento di condivisione e questo strumento può darti una grande opportunità per far conoscere e diffondere i tuoi prodotti come idea regalo.

Scrivere un post su un blog e creare delle landing page a tema con argomento “l’idea regalo perfetta per lui e per lei” oppure “Le migliori sorprese  per San Valentino “, può sicuramente essere una mossa vincente.

3. Differenzia la tua vetrina

Come per la mail, diventa molto importante differenziare per genere anche la tua Showcase. Questo infatti consente al cliente di trovare più rapidamente il regalo perfetto, avendo a disposizione una vetrina specifica per lui e una specifica per lei.

Rendi la ricerca del prodotto più facile da usare e magari con la possibilità di filtrare i risultati per categoria, prezzo e dimensioni.

4. Spedizione garantita prima del 14 Febbraio

Questo è sicuramente un must-have per aumentare le vendite. Condividi e promuovi la tua promessa di spedizione garantita entro San Valentino.

Avere una spedizione garantita di questo tipo, sicuramente invoglia i clienti ad acquistare sul tuo sito.

consegna-veloce

5. Confezione personalizzata

Molti clienti che acquisteranno online, invieranno direttamente alla loro dolce metà il regalo acquistato per loro per San Valentino.

Per questo motivo diventa molto importante promuovere la confezione regalo gratuita e magari con la possibilità di un messaggio personalizzato. I tuoi clienti sicuramente lo apprezzeranno!

6. Dona un’aria romantica al tuo E-Commerce

Cuori, cupidi e quant’altro per diffondere l’idea di Amore, renderanno il tuo store più romantico e i tuoi clienti più ben disposti all’acquisto. In questo modo infatti il cliente viene coinvolto di più.

Quindi via libera a cuori rossi, pacchettini regalo e quant’altro pensi possa essere utile a rendere il tuo E-Commerce quanto di più romantico ci sia.

7. Fornisci ai clienti un servizio eccezionale

Un servizio ottimo è la migliore strategia di marketing applicabile, perché un cliente soddisfatto è un cliente che poi ritorna.

Oltre quindi alle normali possibilità che un E-commerce può offrire ai propri clienti, come gentilezza e cortesia, puntualità nelle spedizioni, supporto per resi e cambi etc… può essere un’idea anche dare consigli sul tipo di regalo da acquistare.

Ad esempio, potete introdurre, se già non l’avete, una live chat con la quale un vostro incaricato potrà comunicare in tempo reale con il cliente e consigliarlo sugli acquisti.

8. Usare i social media

I social sono sicuramente un mezzo pubblicitario perfetto, perché ti consentono di pubblicizzare i tuoi prodotti e non solo…

Attraverso questi strumenti puoi ad esempio promuovere un contest a tema, una promozione o condividere magari storie d’amore legate al tuo prodotto.

Facebook, Twitter, Instagram e Pinterest sono strumenti perfetti da utilizzare per far conoscere e diffondere i propri prodotti.

9. Fai ricevute di cortesia

Un’altra idea da sfruttare è quella di fare, se si tratta di un regalo, ricevute di cortesia, senza quindi il prezzo indicato. In questo modo i clienti si sentiranno più tranquilli qualora la loro dolce metà dovesse effettuare un cambio o un reso.

10. Promuovi le carte regalo

Quante volte siamo stati in crisi per non sapere cosa regalare, ecco che in questo caso ci vengono in aiuto le carte regalo, o gift card per dirla all’inglese. Per acquisti dell’ultimo minuto o per gli eterni indecisi, le carte regalo sono sempre un’idea vincente.

Creane di stampabili e promuovile e vedrai che successo!

Ti è piaciuto questo articolo? Votalo!

3 tecniche per proteggere un sito WordPress dagli attacchi SQL injection

3 tecniche per proteggere un sito WordPress dagli attacchi SQL injection

WordPress è di gran lunga la piattaforma più usata per realizzare la maggior parte dei siti web: dal blog all’e-commerce, dal sito vetrina al portale turistico. Questo però ha come diretta conseguenza il fatto che sia anche potenzialmente vulnerabile agli attacchi hacker. Nello specifico, analizzeremo alcune delle tecniche per proteggersi e possibilmente prevenire gli attacchi SQL injection.

Oltre ad approfondire nel nostro blog come proteggere un sito web da malware e hacker, ti ricordiamo che tra i nostri servizi, oltre a domini e hosting, sono disponibili anche quelli relativi alla sicurezza di un sito web: i certificati SSL, SiteLock per la protezione dal malware e il Cloud Backup.

Ti chiederai come fare SQL injection e soprattutto che significa. Facciamo quindi una premessa. L’SQL injection (dove SQL sta per Structured Query Language) è una tecnica di programmazione, usata per attaccare applicazioni di gestione dati, con la quale vengono inseriti delle stringhe di codice SQL malevole all’interno di campi di input in modo che vengano eseguiti.

Sfrutta le vulnerabilità di sicurezza del codice di un’applicazione, ad esempio quando l’input dell’utente non è correttamente filtrato da ‘caratteri di escape’ contenuti nelle stringhe SQL oppure non è fortemente tipizzato e viene eseguito inaspettatamente.

L’SQL injection in PHP è più conosciuto come attacco ai siti web, ma è anche usato per attaccare qualsiasi tipo di database SQL.

La caratteristica principale dei CMS e quindi di WordPress, rispetto allo sviluppo in solo HTML, è proprio quella di utilizzare un database per memorizzare i dati necessari alla visualizzazione del contenuto del sito web.

Se questi non vengono opportunamente validati (con un’analisi del testo), l’hacker sarebbe in grado di inserire dei comandi che potenzialmente potrebbero interagire con il database.

SQL injection: classico e blind

Esistono due tipi di attacchi SQL injection il “classico” e il “blind”.

Effettuare un test di performance su MySQLMentre nel classico la vulnerabilità di SQL vede un input dell’utente non filtrato permettendo a un utente malintenzionato di inviare comandi al database ed avere una risposta; il “blind” consente al malintenzionato di inviare comandi al database, ma non permette di avere l’output del database.

Una SQL injection è in grado di generare un elenco di database a cui l’hacker ha accesso, oltre alla visione delle tabelle del database e gli consente di scaricare una serie di informazioni sensibili.

3 tecniche per proteggersi dagli attacchi SQL injection

Analizziamo quindi le tre migliori tecniche che consentono di proteggere dalla SQL injection un sito web realizzato e sviluppato mediante WordPress, il CMS più utilizzato nel mondo.

1. Pulire ed eliminare tutto ciò che può interferire con il database

Il modo più semplice per fare questo con WordPress, è quello di utilizzare la tecnica di preassegnare dei valori alle variabili tramite l’utilizzo dei placeholders all’interno del database MySQL.

2. Limitare i privilegi degli utenti dei database

Ottimizzare MySQL per migliorare le prestazioni del databaseDi default MySQL offre diverse tipologie di account e privilegi di accesso al database MySQL.

Tuttavia, non sempre sono necessari per l’uso quotidiano delle attività connesse a WordPress:

  1. creazione di nuovi utenti;
  2. post nel blog;
  3. caricamento di file multimediali;
  4. commenti agli articoli;
  5. installazione di plugin.

L’utente del database MySQL ha bisogno solo delle funzioni di lettura e scrittura cioè: SELECT, INSERT, UPDATE e DELETE. Altre strutture di database MySQL e una abbondanza di privilegi di amministrazione, come, ad esempio DROP, ALTER e GRANT possono essere revocate.

Questo mette in atto una politica di contenimento considerevole per prevenire gli attacchi SQL injection. 

3. Backup dei dati e codifica (criptazione)

Come fare il backup del database MySQL nel cloudEncrypt & Backup sono due elementi fondamentali per questo passaggio.

Questa tecnica si basa sui seguenti punti:

  1. codificare il backup;
  2. mantenere una registrazione indipendente degli hash MD5;
  3. esportare i backup su supporti esterni;
  4. realizzare degli snapshot ad intervalli regolari dell’installazione di WordPress;
  5. assicurarsi che gli snapshot includano tutti i file del core di WordPress compreso il database (meglio se questo è esterno al server su cui è installato WordPress).

In questo modo, anche se il sito ha subìto un attacco SQL injection, avendo fatto il backup sarà possibile ripristinare il sito in poco tempo.

Oltre il backup dei dati, un suggerimento utile è quello di camuffare l’account amministrativo cambiandogli il nome ed o il prefisso nelle tabelle del database. Questo può prevenire gli attacchi pre-programmati.

SQL injection: conclusione

Queste sono solo tre tecniche che semplificano la vita ai sistemisti e consentono agli sviluppatori web di realizzare siti WordPress un minimo più sicuri. Certamente le difficoltà sono tante ma è importante approcciare queste problematiche nel migliore dei modi.

Nel limite del possibile dobbiamo sempre fare il massimo per prevenire qualsiasi tipo di attacco. Lo ripeto ancora una volta, non dimenticare mai di:

Questo è il punto di partenza, poi potrai adottare altre soluzioni, anche più complesse.

Restiamo in attesa dei tuoi suggerimenti e delle tecniche o dei plugin che eventualmente utilizzi per proteggere il tuo sito web dagli attacchi hacker. Scrivili nei commenti, grazie.

Facebook per l’e-commerce: strumenti e segreti con Veronica Gentili

Facebook per l'e-commerce: strumenti e segreti con Veronica Gentili

Dopo aver conosciuto Gianpaolo Lorusso, sempre grazie al Sowebing Camp 2017, il primo evento di Web Marketing in Abruzzo organizzato da HostingVirtuale e Spinosi Marketing Strategies, avremo la possibilità di ascoltare una professionista tra le più esperte in Italia su Facebook: Veronica Gentili.

Nella sessione gratuita del camp, Veronica curerà un intervento dal titolo “I social media e la promozione di un e-commerce” mentre, nel pomeriggio ci parlerà di “Facebook Ads, tecniche per una corretta pubblicazione di inserzioni e verifica dei risultati”.

Il Sowebing Camp 2017 è la terza edizione dell’evento che ha l’obiettivo di accrescere le competenze di Web Marketing grazie alla presenza dei migliori professionisti italiani.

L’intervista a Veronica Gentili

Passiamo alle cinque domande, le stesse su cui ci ha dato una risposta anche Gianpaolo Lorusso, relative al web marketing e al ruolo che riveste attualmente l’e-commerce in Italia. Lasciamo la parola a Veronica.

1. Essendo uno tra i maggiori professionisti italiani di web marketing, puoi tracciare una sintesi dell’attuale situazione italiana?

Diciamo che molte aziende, anche microimprese, stanno iniziando a capire l’importanza del web per la loro attività ed iniziano ad uscire dal modo di pensare in cui “per fare business online basta avere il sito web”.

Facebook Marketing 2016: strategie e novità per aziendePurtroppo però in molti casi siamo ancora lontani dal capire l’importanza di un percorso integrato tra l’offline e l’online, in cui si riesce a costruire e a monitorare più punti di contatto e ingaggio con il cliente.

Siamo messi meglio di un paio di anni fa, ma ancora la strada è lunga per pensare a strategie integrate.

2. In base alla tua esperienza diretta, quali sono stati i cambiamenti più importanti da parte delle aziende nell’approccio con il web in Italia?

Beh, prima di tutto in molti stanno iniziando a capire l’importanza dell’implementazioni di canali e strategie quali la SEO, il SMM, la SEA.

I social in particolare stanno diventando sempre più rilevanti e sono sempre più le aziende che si rendono conto di come serva una gestione continua e professionale per farli diventare delle risorse di business. Mi sembrano già considerevoli passi in avanti!

3. In che modo è cambiato il consumatore negli ultimi anni? Quale ruolo riveste l’e-commerce oggi, secondo te?

Il consumatore si è rivoluzionato negli ultimi anni. Si parla di un utente molto più consapevole, autonomo, che dà più importanza all’esperienza e al valore che offre il prodotto/servizio che al prodotto/servizio in sé (Kotler docet).

Ottimizzare un ecommerce per aumentare le conversioni da mobileE’ un consumatore che sa di essere al centro e pretende di essere ascoltato e capito, viceversa sa di avere in mano tutti gli strumenti per poter rovinare (a volte anche a torto) ciò che di più prezioso un brand ha: la reputazione (brand reputation).

L’ecommerce non è altro che la risposta a questo (non più tanto) nuovo tipo di consumatore che vuole avere la libertà di acquistare ciò che vuole, quando vuole, al prezzo più conveniente e nel modo più semplice e piacevole possibile. La sfida è riuscire a rispondere a un cliente sempre più esigente e che vuole risposte subito, qui e ora.

4. Quali strumenti di promozione ritieni fondamentali per il successo di un progetto e-commerce?

Credo fondamentalmente che il successo di un’ecommerce si basi sulla conoscenza del customer journey, il viaggio del cliente e sull’utilizzo strategico di tutti gli strumenti/canali che lui usa per informarsi, scegliere ed acquistare.

In generale ritengo centrali la SEO (Search Engine Marketing) per essere presenti quando il cliente ci sta cercando, ma anche il Social Media Marketing per avvicinarlo, coinvolgerlo, ritenerlo ed offrire un buon servizio di customer care, così come il Content Marketing, fondamentale sia per farsi trovare che per coinvolgere.

Dipende dal settore e dal brand, ma anche il Newslettering e le Digital PR sono molto importanti, senza dimenticare l’Influencer Marketing.

5. L’evento Sowebing, per la sua tipologia è il 1° in Abruzzo, mentre nelle altre regioni è un fenomeno già consolidato. Quali ritieni che saranno i temi di maggiore interesse tra 1 anno relativi al web marketing?

Credo che i bot, l’Artificial Intelligence (AI) e la Realtà Virtuale (VR) saranno sempre più centrali e di qui ad un anno sempre più discussi, anche in Italia!

Veronica Gentili al Sowebing Camp 2017

Sowebing Camp 2017

Ringraziamo Veronica per i consigli e i suggerimenti che ci ha fornito in poche righe sul mondo social e in particolare su Facebook.

11 migliori temi WordPress per eCommerce

11 migliori temi WordPress per eCommerce

Abbiamo selezionato 11 tra i migliori temi WordPress per ecommerce considerando che l’utilizzo di WordPress nel settore del commercio elettronico sta diventando sempre più interessante grazie alla presenza di plug-in e temi di qualità. Tanti infatti sono i temi professionali per creare un e-commerce di successo da rendere conveniente l’uso di WordPress per sviluppare un sito web con annesso shopping on line.

I vantaggi principali di sviluppare un sito e-commerce con WordPress sono che viene utilizzato da tanti utenti e sviluppatori e quindi il supporto non manca, che è una piattaforma molto più semplice rispetto a Magento o Opencart e soprattutto il fatto che sia gratuito e quindi non prevede costi di licenza annuale di alcun tipo.

Prima di iniziare, non dimenticare di scegliere l’hosting WordPress adatto ad un sito ecommerce seguendo il nostro consiglio di iniziare subito con un servizio dedicato come un semplice ed economico VPS (Virtual Private Server) anche con assistenza sistemistica.

Avere un sito e-commerce personalizzato, progettato e sviluppato ad hoc, è sempre un’opzione molto allettante, in ogni caso la qualità dei temi disponibili attualmente su internet permette di avviare un sito e-commerce dall’aspetto professionale con un investimento iniziale molto basso.

Alcuni temi WordPress hanno già la funzionalità e-commerce integrata mentre altri sono progettati e sviluppati per essere integrati con i migliori plugin per ecommerce quali ad esempio: WooCommerce, Jigoshop, WP e-Commerce e Cart66.

Inoltre nonostante ci siano tanti temi WordPress eCommerce gratis, abbiamo preferito selezionare quelli che possono sicuramente essere utilizzati anche in italiano ma soprattutto che siano professionali e quindi a pagamento, sinonimo di garanzia e qualità.

Per approfondire: In caso di dubbi nella scelta del template per il tuo nuovo sito, puoi leggere anche il nostro articolo su come scegliere un tema WordPress e in seguito la selezione dei 5 migliori plugin ecommerce per WordPress.

Migliori temi WordPress per eCommerce

Ecco una selezione di alcuni temi professionali applicabili all’e-commerce che possono essere installati nel tuo sito WordPress per trasformarlo in un negozio online semplice ed immediato. Analizziamoli uno ad uno, mostrando pregi e difetti.

1. Gather

Temi WordPress per eCommerce: Gather

Gather può essere integrato con WooCommerce per il commercio elettronico ed è ideale per aziende che fanno stampa e grafica o per rivenditori di libri online, è indicato anche per aziende che vendono corsi di formazione e servizi.

2. Blanco

Temi WordPress per eCommerce: Blanco

Blanco è un bel tema e-commerce WordPress che dispone di un design responsive, con variazioni di colore illimitate, font di Google, e molto altro.

Si integra sia con WooCommerce e WP e-Commerce. Indicato ad esempio per articoli di gioielleria, abbigliamento, intimo di alto livello, per un wedding planner o servizi legati ai matrimoni.

3. X | The Theme

Temi WordPress per eCommerce: X

X The Theme è un tema versatile che include l’integrazione con WooCommerce. Viene fornito con 4 diverse versioni, ognuna può essere personalizzata ulteriormente con grande flessibilità e con un design responsive.

La versione Ethos è indicata ad esempio per negozi di abbigliamento da uomo che vogliano imporre il proprio stile. La versione Icon invece può essere indicato per rivenditori di preziosi con stile giovanile o aziende che sviluppano grafica o decoratori e interior designer che vendono i propri servizi in rete.

La Versione Renew è certamente la più versatile ed è appropriata quasi per tutti, negozi di ottica, rivenditori di tecnologia, telefonia e altro. La versione Integrity è indicata per grandi aziende che vogliono creare una presenza per il proprio marchio e creare anche uno shop online ad esso associato.

4. Kallyas

Temi WordPress per eCommerce: KallyasKallyas è un tema responsive per WooCommerce, ed è il più venduto dei temi e-commerce WordPress. Comprende un generatore di pagina, opzioni di colore illimitate, pagine personalizzate, 6 stili di homepage. È un tema che se associato ad una fotografia professionale, può dare vita a un sito e-commerce economico, sicuro e di successo con poche mosse. È molto versatile e va bene per ogni tipo di azienda.

5. eStore

eStore è un tema e-commerce molto elegante. Si integra con i plug-in come eShop. È indicato per aziende che vendono prodotti di design, scarpe, oggettistica, ma è comunque molto sensibile alle variazioni grafiche, che possono essere ad esso applicate.

6. Boutique

Temi WordPress per eCommerce: Boutique

Boutique è un altro tema per il commercio elettronico. Viene fornito con diverse combinazioni di colori. È indicato per aziende che vendono diversi tipi di prodotti oppure per negozi ad esempio di scarpe da donna o prodotti per la casa. Dipende molto da come viene personalizzato.

7. Mearishop

Mearishop è un tema che offre il layout e opzioni di colore illimitati, oltre a un design responsive. Si integra con WooCommerce ed è ottimo per pelletterie, atelier, negozi di abbigliamento di una certa eleganza.

8. Rustik

Rustik è un tema minimale e giovanile. Viene fornito con schemi di luce e colori scuri e offre ulteriori personalizzazioni colori. Il tema si integra con WooCommerce ed è particolarmente indicato per negozi online che prediligono uno stile minimale.

9. MayaShop

Temi WordPress per eCommerce: Boutique

MayaShop è attualmente il numero due nelle classifiche di vendita di temi per e-commerce. È dotato di design responsive, molte opzioni di personalizzazione, e si integra con WooCommerce e JigoShop.

È un tema elegante che si adatta ad ogni tipo di negozio e-commerce per un ambiente elegante. 

10. Mazine

Temi WordPress per eCommerce: MazineMazine utilizza un layout accattivante, offre 6 diverse combinazioni di colori e si integra con il plugin per ecommerce WP e-Commerce. Indicato ad esempio per un negozio di arredamento e di oggettistica online risulta molto semplice e lineare e dal design minimalista.

11. Stored

Temi WordPress per eCommerce: Stored

Stored è il tema perfetto per partire con un negozio online di magliette o camice. Stored offre agli utenti molta scelta, temi scuri o chiari a seconda del tipo di grafica che si vuole creare. Il tema si integra con il plugin Cart66 per il commercio elettronico.

Temi WordPress per eCommerce: conclusione

Ovviamente questo elenco non può essere esaustivo e come avrai capito le scelte dei temi WordPress per un sito e-commerce sono tantissime, c’è solo l’imbarazzo della scelta! Molto dipende dal tuo gusto estetico e molto anche dalla tipologia di eshop.

La nostra è semplicemente una selezione di quelli che riteniamo al momento i migliori temi WordPress per ecommerce che si basano essenzialmente su WooCommerce, uno dei plugin più interessanti per sviluppare uno negozio di commercio elettronico.

Restiamo in attesa dei tuoi consigli per poter migliorare e ampliare questa selezione. Comunicaci i tuoi temi per ecommerce preferiti direttamente nei commenti, grazie.

Magento: gli observer, un caso di utilizzo concreto

observer-magento

Magento ha guadagnato una vasta popolarità nello sviluppo di piattaforme dedicate all’e-commerce grazie anche alla scelta implementativa di adottare vari design pattern molto apprezzati dagli sviluppatori tra i quali il pattern ‘Event Observer’. Nell’universo Magento il pattern ‘Event Observer’ fornisce un valido meccanismo per estendere Magento stesso, senza la necessità di sovrascrivere le classi del core. Questo offre agli sviluppatori la possibilità di iniettare della logica personalizzata o alterare il normale flusso di particolari funzioni del sistema.

In questo articolo verrà mostrato nel concreto l’uso degli observer, sviluppando un modulo di Magento con l’obiettivo di inviare una email all’e-commerce manager di uno store (o a qualsiasi altro indirizzo email) al cambio di stato di un ordine. Questo, per aggiornare quindi non solo sugli acquisti conclusi con successo (operazione gestita di default dal sistema) ma, per esempio, anche per quei tentativi non portati a termine o per gli ordini cancellati.

Durante la spiegazione della creazione del modulo, che chiameremo OrderStatusNotifier, verranno toccati vari argomenti delicati ed importanti di Magento come: la gestione delle ACL (Access Control List), la creazione di template per l’invio di email di sistema e relative traduzioni, lo sviluppo di source model ed altro, che non sono oggetto di discussione di questo articolo. I lettori sono invitati comunque ad un approfondimento sugli stessi.

Supponendo ‘WaPoNe’ come vendor del modulo, partiamo con la stesura dei file richiesti per registrare un’estensione Magento:
app/etc/modules/WaPoNe_OrderStatusNotifier.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
 <modules>
 <WaPoNe_OrderStatusNotifier>
 <active>true</active>
 <codePool>local</codePool>
 </WaPoNe_OrderStatusNotifier>
 </modules>
</config>

app/code/local/WaPoNe/OrderStatusNotifier/etc/config.xml
<config>
 <modules>
 <WaPoNe_OrderStatusNotifier>
 <version>1.0.0</version>
 </WaPoNe_OrderStatusNotifier>
 </modules>
</config>

A questo punto possiamo registrare un “model”, visto che ci serve un observer, oltre a configurare l’evento che farà partire l’observer stesso. Quindi andiamo ad aggiungere il sottostante codice nel tag <config> di  app/code/local/WaPoNe/etc/config.xml

<global>
 <models>
 <WaPoNe_OrderStatusNotifier>
   <class>WaPoNe_OrderStatusNotifier_Model</class>
 </WaPoNe_OrderStatusNotifier>
 </models>
 <events>
 <sales_order_save_after>
        <observers>
        <mail_status_change>
        <type>singleton</type>
            <class>WaPoNe_OrderStatusNotifier/observer</class>
        <method>notify</method>
        </mail_status_change>
        </observers>
 </sales_order_save_after>
 </events>
 </global>

L’evento che si occuperà di far scattare il nostro observer sarà sales_order_save_after

Durante il salvataggio di un ordine, il sistema quindi lancerà la dispatch() in question, che verrà agganciata dal nostro observer. Questo effettuerà una chiamata al metodo notify() della classe WaPoNe_OrderStatusNotifier_Model_Observer; vediamo come implementarla.

All’interno della directory app/code/local/WaPoNe/OrderStatusNotifier aggiungiamo la cartella Model/ e al suo interno il file Observer.php con questo contenuto:

<?php
 
class WaPoNe_OrderStatusNotifier_Model_Observer
{
 
       public function notify($event)
       {
       // Check 'wapone_orederstatusnotifier_prevent_observer' registry variable to prevent to fire observer more times
       if(!Mage::registry('wapone_orederstatusnotifier_prevent_observer')) {
       $order = $event->getOrder();
 
       //Order Statuses to notify
       $statuses_to_notify = 
$this->_getStatuses('orderstatusnotifier/orderstatusnotifier_group/statuses');
 
       if (in_array($order->getStatus(), $statuses_to_notify)) {
               // Send mail
               $this->_sendEmail($order);
       }
 
       // Assign value to 'wapone_orederstatusnotifier_prevent_observer' registry variable
       Mage::register('wapone_orederstatusnotifier_prevent_observer', true);
       }
       }
 
      /* Retrieving order statuses selected */
      private function _getStatuses($param)
      {
      $statuses = Mage::getStoreConfig($param);
      $arr_result = array();
 
      if (!empty($statuses)):
      $arr_result = explode(",", $statuses);
      endif;
 
      return $arr_result;
      }
 
      /* Retrieving order status label */
      private function _getOrderStatusLabel($orderStatus)
      {
      $orderStatusLabel = "";
 
      $statuses = 
Mage::getModel('sales/order_status')->getResourceCollection()->getData();
      foreach ($statuses as $status)
      {
      if($status["status"] == $orderStatus)
               return $status["label"];
      }
      return $orderStatusLabel;
      }
 
      /* Sending email */
      private function _sendEmail($order)
      {
      $orderStatusLabel = $this->_getOrderStatusLabel($order->getStatus());
 
      $emailTemplate = Mage::getModel('core/email_template');
 
      // Get sender email address (System->Configuration->Order Status Notifier)
      $salesData['name'] = 
Mage::getStoreConfig('orderstatusnotifier/orderstatusnotifier_group/sender_name');
      $salesData['email'] = 
Mage::getStoreConfig('orderstatusnotifier/orderstatusnotifier_group/sender_email');
 
     // Get receiver email addresses (System->Configuration->Order Status Notifier)
     $receivers = explode(";",
Mage::getStoreConfig('orderstatusnotifier/orderstatusnotifier_group/receiver_emails'));
 
    // Loading email template
  $emailTemplate->loadDefault('wapone_order_status_notifier');
 
   // Email Subject is set in the email template
   // $emailTemplate->setTemplateSubject($email_subject);
 
   $emailTemplate->setSenderName($salesData['name']);
 $emailTemplate->setSenderEmail($salesData['email']);
 
   $emailTemplateVariables['order'] = $order;
   $emailTemplateVariables['store'] = Mage::app()->getStore();
   $emailTemplateVariables['order_status'] = $orderStatusLabel;
 $emailTemplateVariables['username'] = $order->getCustomerFirstname() . ' ' . 
$order->getCustomerLastname();
   $emailTemplateVariables['order_id'] = $order->getIncrementId();
   $emailTemplateVariables['store_name'] = $order->getStoreName();
   $emailTemplateVariables['store_url'] = 
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
  $emailTemplateVariables['payment_method'] = 
$order->getPayment()->getMethodInstance()->getTitle();
 
  $emailTemplate->send($receivers, $order->getStoreName(), 
$emailTemplateVariables);
       }
}

Il metodo notify() si occuperà semplicemente di prelevare gli stati dell’ordine per i quali inviare la email, configurati nel backend del modulo, e, se lo stato attuale dell’ordine è uno di questi, chiamare la funzione _sendEmail(), che prepara le variabili da utilizzare nel template della email (caricato nella riga $emailTemplate->loadDefault(‘wapone_order_status_notifier’)) e chiama il metodo send() della classe Mage_Core_Model_Email_Template.

Occorre quindi anche preparare un template per l’email da inviare. Per fare questo abbiamo bisogno di:

1. Aggiungere la configurazione in app/code/local/WaPoNe/etc/config.xml nel tag <global>

<template>
       <email>
       <wapone_order_status_notifier module="WaPoNe_OrderStatusNotifier">
       <label>Order Status Notifier</label>
       <file>wapone/order_status_notifier.html</file>
       <type>html</type>
       </wapone_order_status_notifier>
       </email>
</template>

2. Creare il template order_status_notifier.html sotto la cartella app/locale/en_US/template/email/wapone/, come definito in <file>wapone/order_status_notifier.html</file> del config.xml

<[email protected] Order Status Notifier: {{var store.getFrontendName()}}, 
Order #{{var order.increment_id}} @-->
 
<[email protected]
body,td { color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif; }
@-->
 
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; 
font-size:12px; margin:0; padding:0;">
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; 
font-size:12px; margin:0; padding:0;">
        <table cellspacing="0" cellpadding="0" border="0" width="100%">
        <tr>
        <td align="center" valign="top" style="padding:20px 0 20px 0">
                <table bgcolor="#FFFFFF" cellspacing="0" cellpadding="10" border="0" 
width="650" style="border:1px solid #E0E0E0;">
               <!-- [ header starts here] -->
               <tr>
               <td valign="top"><a href="{{store url=""}}"><img src="{{var logo_url}}" 
alt="{{var logo_alt}}" style="margin-bottom:10px;" border="0"/></a></td>
               </tr>
               <!-- [ middle starts here] -->
               <tr>
               <td valign="top">
                       <p style="font-size:12px; line-height:16px; margin:0;">
                     <b>{{htmlescape var=$order.getCustomerName()}} ({{var 
order.customer_email}}) has changed order status in: {{var order_status}}</b>
                      </p>
              </tr>
              <tr>
              <td>
                      <h2 style="font-size:18px; font-weight:normal; margin:0;">Order #{{var 
order.increment_id}} <small>(placed on {{var 
order.getCreatedAtFormated('long')}})</small></h2>
              </td>
              </tr>
              <tr>
              <td>
                   <table cellspacing="0" cellpadding="0" border="0" width="650">
                    <thead>
                    <tr>
                    <th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; 
padding:5px 9px 6px 9px; line-height:1em;">Billing Information:</th>
                     <th width="10"></th>
                     <th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; 
padding:5px 9px 6px 9px; line-height:1em;">Payment Method:</th>
                     </tr>
                     </thead>
                     <tbody>
                     <tr>
                     <td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; 
border-left:1px solid #EAEAEA; border-bottom:1px solid 
#EAEAEA; border-right:1px solid #EAEAEA;">
                            {{var order.getBillingAddress().format('html')}}
                       </td>
                        <td>&nbsp;</td>
                        <td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid 
#EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
                                      {{var payment_method}}
                                  </td>
                                  </tr>
                                  </tbody>
                                  </table>
                             <br/>
                                  {{depend order.getIsNotVirtual()}}
                                  <table cellspacing="0" cellpadding="0" border="0" width="650">
                                  <thead>
                                  <tr>
                                  <th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; 
padding:5px 9px 6px 9px; line-height:1em;">Shipping Information:</th>
                     <th width="10"></th>
                    <th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; 
padding:5px 9px 6px 9px; line-height:1em;">Shipping Method:</th>
                     </tr>
                     </thead>
                     <tbody>
                     <tr>
                     <td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; 
border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid 
#EAEAEA;">
                           {{var order.getShippingAddress().format('html')}}
                        &nbsp;
                        </td>
                        <td>&nbsp;</td>
                        <td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; 
border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid 
#EAEAEA;">
                           {{var order.getShippingDescription()}}
                        &nbsp;
                        </td>
                        </tr>
                        </tbody>
                        </table>
                        <br/>
                        {{/depend}}
 
                        <!-- Order Items -->
                        {{layout handle="sales_email_order_items" order=$order}}
 
                        <p style="font-size:12px; margin:0 0 10px 0">{{var 
order.getEmailCustomerNote()}}</p>
              </td>
              </tr>
              </table>
       </td>
       </tr>
       </table>
</div>
</body>

Quello che manca è la parte della configurazione dei parametri del modulo. Si vorrebbe permettere all’utente di scegliere il nome e l’indirizzo email del sender della email, gli indirizzi di posta elettronica che invece devono ricevere il messaggio di posta e gli stati dell’ordine che si vogliono monitorare.

Tutto questo è possibile grazie al file app/code/local/WaPoNe/etc/system.xml così fatto:

<?xml version="1.0"?>
<config>
       <sections>
       <orderstatusnotifier translate="label" module="adminhtml">
       <label>Order Status Notifier</label>
       <tab>wapone</tab>
       <frontend_type>text</frontend_type>
       <sort_order>3</sort_order>
       <show_in_default>1</show_in_default>
       <show_in_website>1</show_in_website>
       <show_in_store>1</show_in_store>
       <groups>
              <orderstatusnotifier_group translate="label">
              <label>Order Status Notifier</label>
           <frontend_type>text</frontend_type>
           <sort_order>6</sort_order>
           <show_in_default>1</show_in_default>
          <show_in_website>1</show_in_website>
           <show_in_store>1</show_in_store>
             <fields>
             <sender_name translate="label">
                   <label>Sender Name</label>
                 <frontend_type>text</frontend_type>
             <backend_model>adminhtml/system_config_backend_email_sender</backend_model>
               <validate>validate-emailSender</validate>
               <sort_order>1</sort_order>
               <show_in_default>1</show_in_default>
            </sender_name>
            <sender_email translate="label">
                  <label>Sender Email</label>
             <frontend_type>text</frontend_type>
             <validate>validate-email</validate>
            <backend_model>adminhtml/system_config_backend_email_address</backend_model>
              <sort_order>2</sort_order>
              <show_in_default>1</show_in_default>
           </sender_email>
           <receiver_emails>
             <label>Receiver Emails</label>
             <comment><![CDATA[Insert receiver emails separeted by ';'<br />Do not insert ';' at the end.<br />Ex: [email protected];[email protected]]]></comment>
             <frontend_type>text</frontend_type>
             <sort_order>3</sort_order>
             <show_in_default>1</show_in_default>
             <show_in_website>1</show_in_website>
             <show_in_store>1</show_in_store>
          </receiver_emails>
          <statuses translate="label">
             <label>Statuses</label>
             <frontend_type>multiselect</frontend_type>
          <source_model>WaPoNe_OrderStatusNotifier/system_config_source_orderstates</source_model>
            <sort_order>4</sort_order>
            <show_in_default>1</show_in_default>
          </statuses>
          </fields>
     </orderstatusnotifier_group>
  </groups>
  </orderstatusnotifier>
  </sections>
</config>

In questo file si è scelto di voler prepopolare la multiselect ‘status’ con gli stati di Magento e per fare questo è stato necessario l’utilizzo di un source model personalizzato creando il file Orderstatus.php in app/code/local/WaPoNe/OrderStatusNotifier/Model/System/Config/Source

<?php
 
class WaPoNe_OrderStatusNotifier_Model_System_Config_Source_Orderstatus
{
       public function getOrderStatusesOption()
       {
       $statuses = 
Mage::getModel('sales/order_status')->getResourceCollection()->getData();
      $orderStatuses = array();
      foreach ($statuses as $status)
      {
      $orderStatuses[$status["status"]] = $status["label"];
      }
      return $orderStatuses;
      }
 
      public function toOptionArray()
      {
      $options = array();
      foreach ($this->getOrderStatusesOption() as $code => $label) {
      $options[] = array(
             'value' => $code,
             'label' => $label
      );
      }
 
      return $options;
      }

Un ultimo passaggio, non meno importante degli altri, riguarda la definizione dei permessi sul modulo (ACL); per questo motivo c’è bisogno di creare nella cartella app/code/local/WaPoNe/etc/ il file adminhtml.xml:

<?xml version="1.0"?>
<config>
   <acl>
       <resources>
           <admin>
                 <children>
                 <system>
                 <children>
                         <config>
                       <children>
                         <orderstatusnotifier>
                           <title>Order Status Notifier</title>
                        </orderstatusnotifier>
                     </children>
                       </config>
                    </children>
               </system>
               </children>
        </admin>
        </resources>
        </acl>
</config>

Conclusa la fase di sviluppo non ci resta che configurare il modulo ed aspettare gli ordini dei clienti.
Grazie alla duttilità del pattern ‘Event Observer’ questo modulo può essere riadattato per altre funzionalità come, per esempio, notificare l’iscrizione al portale da parte di un nuovo utente, informare sull’inserimento di un prodotto nella wishlist del cliente e tant’altro ancora.

L’intero modulo è scaricabile e raggiungibile all’indirizzo web: https://github.com/WaPoNe/WaPoNe_OrderStatusNotifier

Meet Magento Italy 2017: Milano 2 – 3 Marzo

meet-magento-italy
5/5 (1)Anche quest’anno, tornerà il Meet Magento Italy nella sua quarta edizione. Un evento incredibile, tra digital retail marketing e innovazione tecnologica.

Dopo il grande successo dello scorso anno, il Meet Magento Italy, porterà i partecipanti alla scoperta di tutte le novità legate alla piattaforma E-Commerce Magento, con particolare attenzione alle strategie tech pensate per realizzare uno store online efficace e multichannel.

I grandi numeri dello scorso anno hanno contato 460 presenze, 39 speech, 20 sponsor e 41 speaker. Alte cifre, per un evento che ad ogni edizione si conferma uno dei più rilevanti di Europa.

Meet Magento Italy: Milano 2 – 3 Marzo 2017

Webformat annuncia  quindi la quarta edizione del Meet Magento Italy, che tornerà a Milano il 2 e 3 marzo 2017, per riunire i maggiori player del panorama E-Commerce mondiale.

Questo evento, uno dei format ufficiali Magento, richiama ogni anno i migliori professionisti tra sviluppatori, merchant, fornitori di servizi e membri della community. Il Meet Magento infatti è un’ ottima occasione per seguire le conferenze tenute da relatori internazionali e confrontarsi così con esperti Magento e professionisti del mondo E-Commerce.

A livello internazionale, da inizio 2016 sono stati più di 21.000 i partecipanti che hanno preso parte ai diversi Meet Magento, 390 gli sponsor e 800 gli speaker coinvolti in oltre 30 Paesi di tutto il mondo.

Webformat, rappresentante in esclusiva di Meet Magento in Italia, anche quest’anno ha organizzato due giornate full immersion nel mondo Magento e E-Commerce. Due giorni in cui potrai immergerti in una realtà aperta al confronto diretto sulle tendenze di mercato e sulle strategie più efficaci per accrescere il successo delle piattaforme E-Commerce. Questo settore è infatti in crescente sviluppo, anche e soprattutto nel nostro Paese. Diventa quindi fondamentale, acquisire conoscenze e rimanere al passo con le ultime novità legate al mondo del virtual shop.

A confermare questo sviluppo, i dati rilasciati dal Osservatorio e-commerce B2c promosso dalla School of Management del Politecnico di Milano e dal Consorzio Netcomm che evidenziano come il valore degli acquisti online degli italiani sia aumentato del 18% per un giro d’affari che sfiora i 20 miliardi di euro tra prodotti (9 miliardi) e servizi (10,6 miliardi).*

Partecipa anche tu al Meet Magento Italy 2017

Per partecipare al Meet Magento Italy 2017 è possibile acquistare i biglietti alla pagina www.meet-magento.it al costo di 249€ iva esclusa (prezzo disponibile fino al 24/02/2017). In occasione del Black Friday e Cyber Monday, gli eventi più attesi a novembre per fare acquisti, dal 25 al 28 novembre 2016 sarà applicato uno sconto del 20% che consentirà di riservarsi il posto a 199€ iva esclusa.

Per condividere la propria esperienza, i progetti innovativi o i risultati delle proprie ricerche, è possibile candidarsi come relatori partecipando alla Call 4 Paper che rimarrà aperta fino al 31 dicembre 2016. Il regolamento è disponibile sul sito.

Per riceve tutti gli aggiornamenti sull’evento, è possibile iscriversi alla newsletter sul sito www.meet-magento.it e seguire i canali social Facebook (www.facebook.com/MeetMagentoIt) e Twitter @MeetMagentoIT con l’hashtag #mm17it.

 

* Consorzio Netcomm & Osservatorio sull’eCommerce B2B e B2C

Come creare un modulo in Magento 1 – Guida allo sviluppo – Parte 2

creare-modulo-magento
5/5 (2)In un precedente articolo abbiamo mostrato quali sono gli step da eseguire per implementare un semplice modulo che stampa la frase “Hello World!” su una pagina del proprio store Magento.

In realtà abbiamo visto solo le fasi iniziali dello sviluppo di un modulo, nello specifico le attività riguardanti la sua registrazione, la sua configurazione di base e la generazione dei controller che si sono occupati di stampare le frasi desiderate sulle pagine web del sito.

Magento adotta, tra i vari, il design pattern MVC (Model-View-Controller) e, come da direttive quindi, non spetta al controller occuparsi della resa grafica.

In effetti, se proviamo a leggere il codice sorgente delle pagine web precedentemente create, vediamo che le frasi stampate dalla nostra istruzione ‘echo’ sono addirittura fuori dal documento HTML delle pagine stesse. Questo proprio perché non sono entrate nel meccanismo di layout di Magento.

Chi si occupa della componente ‘View’ in Magento sono i blocchi (blocks).

Andiamo quindi subito ad eliminare i tentativi di stampa dai nostri controller; cancelliamo la riga

echo 'Hello World from New Controller!';

dal file <base_dir>/app/code/local/WaPoNe/Helloworld/controllers/NewController.php e la riga

echo 'Hello World!';

dal file <base_dir>/app/code/local/WaPoNe/Helloworld/controllers/IndexController.php

Abbiamo quindi ora entrambi i controller che si occupano semplicemente di chiamare il meccanismo di design in Magento, tramite le righe di codice:

$this->loadLayout();

$this->renderLayout();

Chiarito questo punto estremamente importante per un sviluppo corretto dei moduli in Magento, in questo articolo proviamo a rendere il modulo più completo, concentrandoci sulla parte di ‘View’, studiando i blocchi, i layout ed i template.

Partiamo dal vedere come personalizzare il frontend del modulo WaPoNe_Helloworld tramite il caricamento di un file XML di layout.

Per fare questo è necessario apportare delle modifiche al file di configurazione del modulo aprendo con un editor il file <base_dir>/app/code/local/WaPoNe/Helloworld/etc/config.xml (vedi precedente articolo) e all’interno del tag <frontend>, dopo la dichiarazione di <routers> e al suo stesso livello, aggiungiamo:

<layout>
  <updates>
   <helloworld>
    <file>wapone/helloworld.xml</file>
   </helloworld>
 </updates>
</layout>

inoltre prepariamo il file di layout helloworld.xml nella cartella del nostro tema <base_dir>/app/design/frontend/<package>/<theme>/layout/wapone/ (nel caso di un’installazione base di Magento <package> è ‘default’ così come anche theme, come da immagine)

creare-un-modulo-in-magento-1-parte-2

e in esso scriviamo:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
  <helloworld_new_hello>
    <reference name="root">
      <action method="setTemplate">
        <template>page/2columns-right.phtml</template>
      </action>
    </reference>
  </helloworld_new_hello>
</layout>

Ci siamo limitati, per l’”handle” <helloworld_new_hello> a caricare il template di pagina 2columns-right.phtml contenuto all’interno della directory <base_dir>/app/design/frontend/base/default/template/page/ (installazione pulita di Magento).

Soffermandoci sulla nomenclatura dell’handle, vale la regola spiegata nello scorso articolo: <moduleName o frontName>_<controllerName>_<actionName>

Se proviamo quindi a ricaricare la nostra web page all’indirizzo: http://nomesito.estensione/helloworld/new/hello

notiamo subito la mancanza dei blocchi sulla parte sinistra del sito, proprio perché il template che abbiamo impostato non prevede come output la colonna sinistra.

creare-un-modulo-in-magento-1-parte-2

Cominciamo ora a personalizzare la nostra pagina. Visualizzando il contenuto del file template 2columns-right.phtml è possibile notare che esso si dedica alla generazione del documento HTML, effettuando chiamate a vari componenti (reference) come, per esempio, il ”reference” ‘content’ tramite l’istruzione <?php echo $this->getChildHtml(‘content’) ?>, che nel nostro caso (per la nostra pagina) è ancora vuoto, non ha contenuto.

Per questo motivo generiamo un blocco con lo scopo di popolare la porzione ‘content’ della nostra web page.

Per fare questo dobbiamo prima registare il blocco nel file <base_dir>/app/code/local/WaPoNe/Helloworld/etc/config.xml del modulo, aggiungendo il seguente pezzo di codice xml all’interno del tag <config>:

<global>
  <blocks>
    <helloworld>
      <class>WaPoNe_Helloworld_Block</class>
    </helloworld>
  </blocks>
</global>

Fatto questo, possiamo creare il file Hello.php che gestisce il nostro blocco all’interno della cartella <base_dir>/app/code/local/WaPoNe/Helloworld/Block/:

<?php

class WaPoNe_Helloworld_Block_Hello extends Mage_Core_Block_Template
{
    $hello = "Hello World!";
}

Attenzione: il nome del file deve coincidere con il nome della classe del blocco; nell’esempio Hello.php e WaPoNe_Helloworld_Block_Hello

Il passaggio finale prevede la definizione del file di template che si occupa del design della pagina. Torniamo nel file di layout <base_dir>/app/design/frontend/<package>/<theme>/layout/wapone/helloworld.xml ed aggiungiamo l’istruzione che associa il blocco alla reference ‘content’:

<reference name="content">
  <block type="helloworld/hello" name="block_hello" template="wapone/hello.phtml" />
</reference>

nel tag <helloworld_new_hello>.

Il risultato finale del nostro file di layout helloworld.xml è:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
  <helloworld_new_hello>
    <reference name="root">
      <action method="setTemplate">
        <template>page/2columns-right.phtml</template>
      </action>
    </reference>
    <reference name="content">
      <block type="helloworld/hello" name="block_hello" template="wapone/hello.phtml" />
    </reference>
 </helloworld_new_hello>
</layout>

Cosa significano le ultime righe inserite riguardanti il blocco del modulo?

In ‘type’ viene inserita la classe del blocco seguendo la nomenclatura di Magento, si definisce un ‘name’ e si lega al blocco un ‘template’ che viene cercato a partire dalla directory del tema. Andiamo a crearlo, nel caso del nostro esempio, in <base_dir>/app/design/frontend/default/default/template/wapone/ e lo chiamiamo hello.phtml, come definito nel file di layout. E’ qui che il web designer può dare sfogo alla propria fantasia; per il nostro scopo può bastare qualcosa del tipo:

<p><?php echo $this->hello ?></p>

Da notare che nel template viene richiamata la variabile hello (istanziata nella classe del blocco) grazie a $this perché Magento in fase di rendering del layout include il template nel blocco.

Carichiamo nuovamente la pagina web e questa volta il content è popolato dal contenuto della variabile hello:

creare-un-modulo-in-magento-1-parte-2-iii

Ottimo!

Adesso il nostro primo modulo, che si occupa di stampare una frase su una pagina dell’e-commerce, funziona correttamente rispettando i criteri imposti dal pattern MVC.

Ma prendiamo ulteriore dimestichezza con il framework Magento e complichiamo l’esempio; lo facciamo usando l’altra action controller definita nello scorso articolo: <helloworld><index><index>

Supponiamo volessimo stampare in questa pagina gli ultimi cinque prodotti inseriti sullo store.

Andiamo a creare il blocco che si occupa di estrapolare i prodotti; di nuovo in <base_dir>/app/code/local/WaPoNe/Helloworld/Block/ aggiungiamo il file Newproducts.php così fatto:

<?php


class WaPoNe_Helloworld_Block_Newproducts extends Mage_Core_Block_Template
{
  public function getProducts()
  {
    $products = Mage::getModel('catalog/product')->getCollection()
      ->addAttributeToSelect('*')
      ->setOrder('created_at')
      ->setPageSize(5);

    return $products;
  }
}

Per compiere questa attività si è fatto ricorso ad un altro componente importante di Magento: le collection. Anche se le collection non sono argomento di questo articolo, è facilmente intuibile il loro scopo e utilizzo; in questo caso semplicemente si è richiesta una lista di prodotti, caricando tutti gli attributi a loro collegati (addAttributeToSelect(‘*’)), ordinandola per data di creazione dei prodotti (setOrder(‘created_at’)) e filtrandola per estrarne solo cinque (setPageSize(5)).

Ora è necessario definire nel file di layout la gestione del nuovo “handle” che è <helloworld_index_index>. Apriamo nuovamente il file di layout del modulo <base_dir>/app/design/frontend/<package>/<theme>/layout/wapone/helloworld.xml e aggiungiamo nel tag <layout> il nuovo “handle”, esattamente come già fatto per < helloworld_new_hello>, provando a caricare questa volta un template di pagina differente, 2columns-left.phtml:

<helloworld_index_index>
  <reference name="root">
    <action method="setTemplate">
     <template>page/2columns-left.phtml</template>
   </action>
 </reference>
 <reference name="content">
   <block type="helloworld/newproducts" name="block_newproducts" template="wapone/newproducts.phtml" />
 </reference>
</helloworld_index_index>

Quello che manca per vedere la lista dei prodotti è il file template che generiamo sempre in <base_dir>/app/design/frontend/default/default/template/wapone/ e che nominiamo newproducts.phtml come definito. Il suo contenuto è:

<h2>New Products</h2>
<ul>
  <?php foreach ($this->getProducts() as $_product): ?>
    <li><?php echo $_product->getName() ?></li>
 <?php endforeach; ?>
</ul>

Avviamo il nostro browser preferito e digitiamo l’indirizzo web: http://nomesito.estensione/helloworld/index/index o più semplicemente http://nomesito.estensione/helloworld per visualizzare il risultato desiderato:

creare-un-modulo-in-magento-1-parte-2-v

Conclusione

L’obiettivo di questo articolo, sulla base del suo precedente, è stato mostrare come completare la creazione di un modulo rispettando le direttive imposte dai design pattern utilizzati da Magento, come MVC. Ci siamo quindi concentrati sulla parte di View del modulo, spiegando il ruolo dei componenti della presentazione in Magento quali blocchi, layout e template. Volutamente non sono state affrontate tematiche legate all’implementazione della logica di business di un modulo.

Ti è piaciuto questo articolo? Votalo!