DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

EXT: tut_ttproducts_it

Author:Andrea Giorgini
Created:2007-02-23T13:14:43
Changed by:Andrea Giorgini
Changed:2007-02-27T09:56:58
Email:agiorg@gmail.com
Info 2:
Info 3:
Info 4:

EXT: tut_ttproducts_it

Copyright 2005 - 2006, Andrea Giorgini, <agiorg@gmail.com>

This document is published under the Open Content License

available from http://www.opencontent.org/opl.shtml

The content of this document is related to TYPO3

- a GNU/GPL CMS/Framework available from www.typo3.com

Table of contents

EXT: tut_ttproducts_it 1

Introduzione 1

Cosa fa? 1

Requisiti 1

Installazione 1

Cartelle e pagine 2

Template 2

TypoScript Setup 3

Costanti 3

Autenticazione 3

Pagamento 4

Lingue 4

Changelog 4

Introduzione

Cosa fa?

Questo tutorial spiega passo passo come ho implementato il sito di e-commerce dell'azienda per cui lavoro attualmente; il sito e' al momento navigabile su https://shop.norvlit.de . Essendo l'azienda tedesca, per ora l'unica lingua implementata e' il tedesco. Peraltro tutto e' gia' pronto per altre lingue, occorre solo tradurre. Ho deciso di scrivere questo tutorial perche' mi sono perso nella documentazione di tt_products, e non sempre e' facile trovare le risposte che si cercano; inoltre, potrebbe sempre tornare utile un domani ;-) Il presente documento e' distribuito con i soliti disclaimer, quel che ho fatto funziona qui, ma se non funziona da voi non e' colpa mia, ecc... Spero possa tornare utile a qualcuno. Un'ultima cosa, probabilmente molto banale: per un qualche strano motivo, quando si lavora con un prodotto come Typo3 ci si aspetta quasi delle magie, uno pensa di installare un'estensione ed avere il piu' del lavoro gia' fatto. Certe volte e' vero, ma in questo caso e' proprio il contrario, ci vogliono 3 minuti per installare l'estensione, poi bisogna cominciare a lavorare sul serio.

Requisiti

Essendo l'azienda per cui lavoro un'agenzia pubblicitaria, il design e' arrivato completamente dal mio capo, per cui non e' colpa mia se non piace ;-) ; inoltre, c'e' stato un bel po' da fare per riuscire ad adattare le sue idee da grafico ad uno shop funzionante. Questo documento ha come fine quello di aiutare nell'implementazione di tt_products, per cui non mi soffermero' su altre problematiche quali TypoScript, CSS, PHP; daro' per scontato che chi legge questo tutorial sappia di cosa parlo.

Installazione

Premetto che ho utilizzato per il progetto Typo3 4.0.4, che ha il controllo sulle dipendenze quando si installa un'estensione; detto questo, quando ho installato tt_products il sistema ha rilevato le estensioni che mancavano, presentandomi la possibilita' di installarle per prime. Di seguito l'elenco delle estensioni di cui ho avuto bisogno:

  • tt_products
  • newloginbox
  • tipafriend (per poter “suggerire questo prodotto ad un amico”)
  • paypal_suite (non e' scaricabile, l'ho ricevuta dopo che la mia azienda ha fatto una donazione agli sviluppatori)
  • sr_feuser_register

Seguendo le documentazioni delle singole estensioni non ho riscontrato particolari problemi nell'installazione.

Cartelle e pagine

Ecco il mio albero delle pagine:

img-1

Shop e' la pagina principale, il nostro negozio vende 2 tipi di prodotti: prodotti “che hanno senso” (Sinnvoll) e prodotti “senza senso” (Sinnlos). Queste 2 pagine rappresentano le categorie, e sono anche le voci nel menu di navigazione per poter accedere ai prodotti relativi. All'interno di ognuna di queste pagine ho messo una Sysfolder, che ho chiamato Products, perche' contiene i prodotti relativi alla categoria. Poi ho creato le pagine per il risultato della ricerca e per la vista dettagliata del singolo prodotto (Search result e Single view products) perche' il mio capo voleva creare delle pagine ad hoc. Seguono le 4 pagine necessarie ai 4 step di acquisto di un prodotto: Carrello (Warenkorb) dove si ha una overview di quello che e' stato inserito nel carrello, ed eventualmente e' possibile cambiare le quantita', rimuovere prodotti e scegliere il tipo di pagamento; fino a questa pagina non c'e' necessita' di autenticazione (direttiva dal capo), perche' chiunque puo' inserire prodotti nel carrello. Dalla prossima pagina, invece, occorre essere autenticati; ecco allora User info, dove si riempie la form con i dati dell'acquirente, Payment dove c'e' un riepilogo della situazione senza possibilita' di cambiamenti (ma solo un link per poter tornare indietro) e infine Finalize order dove si invia l'ordine.

In queste pagine vanno inseriti anche i relativi plugin tt_products: in Warenkorb ho inserito Basket:content , in User info il plugin Basket: input customer data , in payment invece Basket: control and payment mentre in Finalize order ho messo ovviamente Basket: finalize order . Da non dimenticare, pena la non visualizzazione dei prodotti o del carrello di settare lo Startingpoint in tutte le pagine: dato che quando navigo una categoria voglio vedere esclusivamente i prodotti di tale categoria, lo Startingpoint delle pagine Sinnvoll e Sinnlos e' solo la relativa cartella. Ma in tutte le altre pagine (carrello, pagamento, ecc...) lo Startingpoint e' composto dall'elenco di tutte le Sysfolder contenenti prodotti.

Le pagine seguenti sono poco interessanti, AGB e Datenschutz sono condizioni generali di vendita, semplici link a pagine statiche; Help e' un altro link statico, mentre User registration e User profile sono per la registrazione dei visitatori ed il loro profilo personale, come vedremo piu' avanti. Ora vediamo di far funzionare i prodotti ed il carrello.

Template

Ho preso la template di default di tt_products (nel percorso typo3conf/ext/tt_products/template/products_css_de.html), copiata in fileadmin/template (non mi piace lavorare sui file originali) e personalizzata. Per personalizzata intendo che ho praticamente riscritto tutte le parti che mi son servite per l'implementazione del negozio online: le subtemplate lista prodotti, vista singolo prodotto, vista carrello, vista mini carrello (overview), vista user info, vista pagamento, vista finalize order, lista degli ordini ed infine nello stesso file anche la mail di conferma che viene spedita ad entrambi (sia l'utente che ordina, sia l'amministratore del negozio).

Le ho riscritte in quanto il mio capo voleva che il negozio fosse anche valido XHTML, per cui ho eliminato tutte le tabelle lavorando con div e fogli di stile.

TypoScript Setup

Dato che i progetti con Typo3 crescono molto velocemente in quanto a informazioni e contenuti, mi piace lavorare in modo organizzato, per non perdermi. Per tale motivo creo sempre una SysFolder “Template”, all'interno della quale metto tutte le configurazioni di TypoScript, sia setup che costanti. Quindi includo nelle pagine tali configurazioni, in modo da avere sempre un unico punto in cui son sicuro di trovarle. Di seguito il mio setup TS per tt_products:

# Translations for tt_products

plugin.tt_products.templateFile = fileadmin/template/products_css_de.html [globalVar = GP:L = 1]

plugin.tt_products.templateFile = fileadmin/template/products_css_en.html

[global]

plugin.tt_products {

shipping.10.price = 7

payment >

payment {

radio = 1

TAXpercentage = 19

TAXincluded = 1

10.title = Vorkasse

10.accounts =

20.title = PayPal

30.title = Nachnahme

30.price.type = count

}

}

La prima parte serve a definire la lingua, come vedremo in seguito. shipping.10.price = 7rappresenta i costi di spedizione, nel nostro caso uguali per tutti i prodotti; radio = 1 specifica se la scelta del tipo di pagamento debba essere effettuata tramite un radiobutton oppure no (se impostato su 0 verra' visualizzata una lista a tendina). Seguono i parametri per definire l'IVA (in Germania 19%), se tale IVA debba essere inclusa o meno nei prezzi dei prodotti ed infine i metodi di pagamento disponibili: l'attributo titleper ognuno di essi rappresenta la label che verra' visualizzata in seguito nella template.

Costanti

Subito a seguire vanno anche inserite le costanti:

plugin.tt_products {

priceDecPoint = .

PIDsearch = 32

PIDitemDisplay = 33

PIDuserFolder = 3

PIDbasket = 9

PIDinfo = 54

PIDpayment = 8

PIDfinalize = 40

PIDagb = 34

domain = shop.norvlit.de

lockLoginUserInfo = 1

orderEmail_from = shop@norvlit.de

orderEmail_to = shop@norvlit.de

orderEmail_fromName = Norvlit WebShop

max_note_length = 80

}

E' molto importante qui inserire i PID delle pagine di cui sopra, altrimenti i link tra una pagina e l'altra non funzioneranno; inoltre e' anche molto importante il punto in priceDecPoint. Infatti, a causa di un bug ancora da risolvere nell'estensione Paypal_suite, il pagamento con PayPal fallira' se ci mettiamo una virgola (per tutto il resto dell'applicazione invece non ci sono problemi al riguardo).A questo punto, dovrebbe gia' essere possibile poter vedere i prodotti, inserirli nel carrello, modifcarne le quantita' ed avere un riepilogo della situazione.

Autenticazione

Per poter proseguire nell'acquisto occorre, nel nostro negozio, essere utenti registrati, motivo per il quale ho installato altre 2 estensioni: Front end user registration per la registrazione e Better login box per poter effettuare il login una volta registrati. Rimando ai relativi manuali per le spiegazioni di come fare, non ho incontrato particolari problemi con queste estensioni; da notare il fatto che se nel setup di tt_products impostiamo

lockLoginUserInfo = 1

e nel nostro (“nostro” nel senso di utente visitatore del sito) profilo personale (nel mio elenco la pagina User profile contiene il plugin Front End User Registration con Display mode: Edit e Startingpoint la Sysfolder con gli utenti, Norvlit Webshop Users) riempiamo tutti i dati personali, quando andiamo ad ordinare troveremo la form gia' riempita (e non modificabile). Avremo comunque la possibilita' di specificare un indirizzo di spedizione alternativo per i prodotti.

Pagamento

tt_products era stata pensata all'inizio solo per il mercato tedesco, dove Typo3 e' il CMS piu' utilizzato; per tale motivo per default l'estensione permette di pagare in 2 modalita': Vorkasse, che significa “tu mi fai un bonifico e io ti spedisco i prodotti”, e Nachname, ovvero “dai i soldi al postino” (chiaramente le label possono essere cambiate, come visto precedentemente, tramite l'attributo title). Chiaramente per entrambe le modalita' non e' necessario alcun tipo di transazione a livello del sito, per cui non ci sono configurazioni particolari a parte i parametri per il calcolo delle tasse e della spedizione. Per poter invece utilizzare l'estensione Paypal_suite, che abilita il pagamento con PayPal, occorre fare una donazione agli autori; questo sara' vero solo finche' gli autori stessi non rientrano delle spese (mancano € 2.280 al momento in cui scrivo questo manuale), dopodiche' l'intero codice verra' rilasciato (forza, donate! :-D). Il mio capo voleva che l'IVA fosse inclusa, per cui nelle costanti di tt_products ho impostato:

TAXincluded = 1

Per quel che riguarda il pagamento con Paypal, occorre prima di tutto configurare nei parametri dell'estensione i campi fondamentali, tra cui il piu' importante e' toke: un codice che si puo' richiedere tramite l'account PayPal che dovra' ricevere i pagamenti. Quindi occorre inserire nella template qualcosa tipo:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">

<div>

<input type="hidden" name="cmd" value="_xclick" />

<input type="hidden" name="business" value="shop@norvlit.de" />

<input type="hidden" name="item_name" value="###ORDER_UID###" />

<input type="hidden" name="amount" value="###PRICE_TOTAL_TAX###" />

<input type="hidden" name="no_note" value="1" />

<input type="hidden" name="currency_code" value="EUR" />

<input type="hidden" name="lc" value="DE" />

<input type="hidden" name="tax" value="0.00" />

<input type="submit" name="submit" value="PayPal" />

</div>

</form>

all'interno della subtemplate ###MESSAGE_PAYMENT###, e si vedra' il pulsante che conduce al login di PayPal per poter eseguire il pagamento. Ricordo ancora una volta che per poter implementare questa opzione, al momento, occorre donare agli autori.

Lingue

Per la template di tt_product basta impostare nel setup qualcosa tipo:

plugin.tt_products.templateFile = fileadmin/template/products_css_de.html

[globalVar = GP:L = 1]

plugin.tt_products.templateFile = fileadmin/template/products_css_en.html

[global]

ed avere i due file tradotti completamente nelle varie lingue. Nel setup precedente ovviamente 1 e' la lingua inglese, mentre il default e' la tedesca. Con la stessa tecnica, nei vari TS setup delle pagine, si possono impostare le varie label in giro per il sito; le altre estensioni supportano gia' il multilingua per cui non c'e' problema. Per la traduzione dei prodotti, invece, da ogni Sysfolder contenente i prodotti occorre inserire un nuovo record di tipo “Products (alternative language)”, cosi' come per le categorie “Product category (alternative language)”, riempire i campi con e traduzioni ed il gioco e' fatto.

Changelog

0.1.0 – Prima stesura

img-2 EXT: tut_ttproducts_it - 4