Categorie
Blog

Traduzioni in magento – Parte 2 – Pacchetti di lingua

Ciao a tutti,

dopo avere imparato a tradurre magento attraverso le traduzioni inline, impareremo a tradurre il nostro ecommerce in tutte le lingue del mondo semplicemente aggiungendo al nostro ecommerce i file di lingua scaricabili su sito magentocommerce.com.

Quindi per prima cosa andate sul sito e scaricate la lingua che vi interessa dal seguente indirizzo http://www.magentocommerce.com/translations

Dopo avere cliccato sulla lingua scelta scaricate lo zip della lingua cliccando su download nella colonna package.

Scompattate lo zip e potrete vedere che al suo interno c’è una struttura a cartelle che parte da app. A questo punto copiate il contenuto dello zip sulla directory principale del vostro magento fino ad ottenere una struttura di lingua come nella immagine:

All’interno dello zip ci sono anche altri file di traduzione, che servono a tradurre il template, ma i files principali sono quelli all’interno della directory app/code/locale.

Tutti i files all’interno della cartella della lingua sono nel formato Mage_Modulo.csv e servono a tradurre i corrispettivi moduli.

Qua andranno tutte le traduzioni.

Quello che vi manda di fare adesso sono i seguenti passi:

 

 

 

  1. Andare nell’amministrazione del magento in System -> Configuration -> General
  2. Selezionare lo store view al quale volete associare la lingua
  3. Selezionare la lingue in Locale Options

Dopo avere salvato, appena entrerete nello store view prescelto tutte le parole all’interno del magento verranno tradotte con i file che avete appena uplodato.
 

Categorie
Blog

Traduzioni in magento – Parte 1 – Inline

Questo articolo vi mostrerà come tradurre Magento in tutte le lingue che volete semplicemente navigando nel sito e traducendo direttamente sul frontend tutte le parole non tradotte.
Questo metodo di traduzione prende il nome di Traduzione Inline.
Per abilitare le traduzioni inline è necessario seguire i seguenti passi:

  1. Andate su Sistem -> Configuration -> Developer
  2. Selezionate “Default store view” nel riquadro Current Configuration Scope
  3. Selezionate “Yes”  nel riquadro centrale translate inline – > Enabled for Frontend

Dopo averla abilitata andate sul frontend, scegliendo la lingue che vi interesa tradurre. Come potrete notare vedrete che passando il mouse sopra ad ogni stringa apparirà accanto l’icona di un libro; cliccando su questo libro si aprirà una finestra che vi permetterà di tradurre la stringa direttamente dal frontend.

Come potete vedere nell’immagine della traduzione inline:

Cliccando su submit la traduzione verrà inserita nella tabella:

[sourcecode language=”sql”]

core_translate

[/sourcecode]

Questa tabella conterrà tutte le parole tradotte inline. Come potete vedere dall’immagine precedente, c’è un checkbox che potete abilitare prima del submit; questo checkbox fa si che la traduzione valga per uno specifico store view. Il mio consiglio personale è di lasciare il checkbox a false, in modo che la traduzione valga per tutte le viste con una certa lingue. Nella immagine successiva potrete vedere uno screenshot fatto su phpmyadmin della tabella core_translate che dovrete salvare ed esportare per poterare da un magento all’altro le traduzioni.

Categorie
Blog

Cancellare gli ordini in magento

Per azzerare gli ordini prima di andare in produzione è possibile eseguire la seguente query per azzerare ordini, fatture, spedizioni e note di credito (senza cancellare i clienti).
Per magento 1.4.2 la seguente query è funzionante (si consiglia di fare un backup).
[sourcecode language=”sql”]
— TRUNCATE TABLES
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_billing_agreement`;
TRUNCATE `sales_billing_agreement_order`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_invoiced_aggregated`;
TRUNCATE `sales_invoiced_aggregated_order`;
TRUNCATE `sales_order_aggregated_created`;
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_recurring_profile`;
TRUNCATE `sales_recurring_profile_order`;
TRUNCATE `sales_refunded_aggregated`;
TRUNCATE `sales_refunded_aggregated_order`;
TRUNCATE `sales_shipping_aggregated`;
TRUNCATE `sales_shipping_aggregated_order`;
TRUNCATE `sales_bestsellers_aggregated_daily`;
TRUNCATE `sales_bestsellers_aggregated_monthly`;
TRUNCATE `sales_bestsellers_aggregated_yearly`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;

— RESET AUTOINCREMENT TO 1
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_billing_agreement` AUTO_INCREMENT=1;
ALTER TABLE `sales_billing_agreement_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1;
ALTER TABLE `sales_recurring_profile` AUTO_INCREMENT=1;
ALTER TABLE `sales_recurring_profile_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_refunded_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_refunded_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_shipping_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_shipping_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_daily` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_monthly` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_yearly` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;

— RESET STORE ID COUNTERS
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;
[/sourcecode]

Per ulteriori dettagli potete seguire l’interminabile thread sul forum ufficiale di magento.

http://www.magentocommerce.com/boards/viewthread/1680/P405/

Categorie
Blog

Duplicare spese di spedizione a tasso fisso

Le spese di spedizione sono un rompicapo sia per i programmatori sia per gli esercenti che sono alla continua ricerca di un fornitore di spedizioni che sia adatti alle esigenze aziendali, sia economiche ma anche di flussi di lavoro.

E’ per questo che molte a volte, quando il mio cliente non ha ancora valutato accordi commerciali con spedizionieri, o è nuovo del settore degli ecommerce, io propongo, per semplificare la vita allo sviluppatore, alle pratiche amministrative ed al calcolo del denaro richiesto per le spedizioni due modalità di spedizioni:

  1. Spedizione ordinaria – tasso fisso con arrivo in n-giorni lavorativi (l’esempio del pacco ordinario di Poste Italiane che arriva in 5 giorni lavorativi al costo di 7 euro)
  2. Spedizione prioritaria – tasso fisso con arrivo in 1 giorno lavorativo dopo quello di consegna (questo è l’esempio del pacco celere 1 al costo di 12 euro)

Magento permette di impostare una spedizione a tasso fisso, chiamata “flat rate” che permette di impostare un prezzo per le spedizioni; questo è un caso assai semplice e viene usato per semplificare le modalità di spedizione. E’ chiaro che per poter applicare delle tariffe flat è necessario che i prodotti siano entro un certo range di peso e volume e che le spedizioni siano relegate dentro il territorio nazionale. Molte volte però questo metodo viene usato anche come semplificazione, facendo una media delle spese di spedizione sugli acquisti.

Altre volte è necessaio impostare 2 tipi di spedizioni flat e per questo è necesarrio duplicare le spedizioni flat rate di magento. Andremo adesso a mostrarvi come fare.

Come duplicare le spedizioni flat rate

La procedura è molto semplice e consiste in 4 passi. Chiameremo la nostra seconda modalità di spedizionie flatrate2

  1. Creare il file app/code/core/Mage/AdminHtml/Model/System/Config/Source/Shipping/Flatrate2.php con il seguente contenuto (ho duplicato il file Flatrate.php e sostituito Flatrate con Flatrate2, questa azione sarà fatta anche nei seguenti file creati da uno preesistente)
  2. [sourcecode language=”php”]
    class Mage_Adminhtml_Model_System_Config_Source_Shipping_Flatrate2
    {
    public function toOptionArray()
    {
    return array(
    array(‘value’=>”, ‘label’=> Mage::helper(‘adminhtml’)->__(‘None’)),
    array(‘value’=>’O’, ‘label’=>Mage::helper(‘adminhtml’)->__(‘Per Order’)),
    array(‘value’=>’I’, ‘label’=>Mage::helper(‘adminhtml’)->__(‘Per Item’)),
    );
    }
    }
    [/sourcecode]

  3. Creare il file app/code/core/Mage/AdminHtml/Model/System/Config/Source/Shipping/Flatrate2.php con il seguente contenuto (ho duplicato il file Flatrate.php e sostituito Flatrate con Flatrate2)
  4. [sourcecode language=”php”]
    class Mage_Shipping_Model_Carrier_Flatrate2
    extends Mage_Shipping_Model_Carrier_Abstract
    implements Mage_Shipping_Model_Carrier_Interface
    {

    protected $_code = ‘flatrate2’;
    protected $_isFixed = true;

    /**
    * Enter description here…
    *
    * @param Mage_Shipping_Model_Rate_Request $data
    * @return Mage_Shipping_Model_Rate_Result
    */
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
    if (!$this->getConfigFlag(‘active’)) {
    return false;
    }

    $freeBoxes = 0;
    if ($request->getAllItems()) {
    foreach ($request->getAllItems() as $item) {

    if ($item->getProduct()->isVirtual() || $item->getParentItem()) {
    continue;
    }

    if ($item->getHasChildren() && $item->isShipSeparately()) {
    foreach ($item->getChildren() as $child) {
    if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) {
    $freeBoxes += $item->getQty() * $child->getQty();
    }
    }
    } elseif ($item->getFreeShipping()) {
    $freeBoxes += $item->getQty();
    }
    }
    }
    $this->setFreeBoxes($freeBoxes);

    $result = Mage::getModel(‘shipping/rate_result’);
    if ($this->getConfigData(‘type’) == ‘O’) { // per order
    $shippingPrice = $this->getConfigData(‘price’);
    } elseif ($this->getConfigData(‘type’) == ‘I’) { // per item
    $shippingPrice = ($request->getPackageQty() * $this->getConfigData(‘price’)) – ($this->getFreeBoxes() * $this->getConfigData(‘price’));
    } else {
    $shippingPrice = false;
    }

    $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice);

    if ($shippingPrice !== false) {
    $method = Mage::getModel(‘shipping/rate_result_method’);

    $method->setCarrier(‘flatrate2’);
    $method->setCarrierTitle($this->getConfigData(‘title’));

    $method->setMethod(‘flatrate2’);
    $method->setMethodTitle($this->getConfigData(‘name’));

    if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) {
    $shippingPrice = ‘0.00’;
    }

    $method->setPrice($shippingPrice);
    $method->setCost($shippingPrice);

    $result->append($method);
    }

    return $result;
    }

    public function getAllowedMethods()
    {
    return array(‘flatrate2’=>$this->getConfigData(‘name’));
    }

    }
    [/sourcecode]

  5. Modificare il file app/code/core/Mage/Shipping/etc/System.xm aggiungendo il seguente codice subito dopo la chiusura del tag flatrate all’interno di (carriers/groups)
  6. [sourcecode language=”xml”]
    <flatrate2 translate="label">
    <label>Flat Rate</label>
    <frontend_type>text</frontend_type>
    <sort_order>2</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
    <fields>
    <active translate="label">
    <label>Enabled</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <sort_order>1</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </active>
    <name translate="label">
    <label>Method Name</label>
    <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>
    </name>
    <price translate="label">
    <label>Price</label>
    <frontend_type>text</frontend_type>
    <sort_order>5</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </price>
    <handling_type translate="label">
    <label>Calculate Handling Fee</label>
    <frontend_type>select</frontend_type>
    <source_model>shipping/source_handlingType</source_model>
    <sort_order>7</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </handling_type>
    <handling_fee translate="label">
    <label>Handling Fee</label>
    <frontend_type>text</frontend_type>
    <sort_order>8</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </handling_fee>
    <sort_order translate="label">
    <label>Sort Order</label>
    <frontend_type>text</frontend_type>
    <sort_order>100</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </sort_order>
    <title translate="label">
    <label>Title</label>
    <frontend_type>text</frontend_type>
    <sort_order>2</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
    </title>
    <type translate="label">
    <label>Type</label>
    <frontend_type>select</frontend_type>
    <source_model>adminhtml/system_config_source_shipping_flatrate2</source_model>
    <sort_order>4</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </type>
    <sallowspecific translate="label">
    <label>Ship to Applicable Countries</label>
    <frontend_type>select</frontend_type>
    <sort_order>90</sort_order>
    <frontend_class>shipping-applicable-country</frontend_class>
    <source_model>adminhtml/system_config_source_shipping_allspecificcountries</source_model>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </sallowspecific>
    <specificcountry translate="label">
    <label>Ship to Specific Countries</label>
    <frontend_type>multiselect</frontend_type>
    <sort_order>91</sort_order>
    <source_model>adminhtml/system_config_source_country</source_model>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    <can_be_empty>1</can_be_empty>
    </specificcountry>
    <showmethod translate="label">
    <label>Show Method if Not Applicable</label>
    <frontend_type>select</frontend_type>
    <sort_order>92</sort_order>
    <source_model>adminhtml/system_config_source_yesno</source_model>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
    </showmethod>
    <specificerrmsg translate="label">
    <label>Displayed Error Message</label>
    <frontend_type>textarea</frontend_type>
    <sort_order>80</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
    </specificerrmsg>
    </fields>
    </flatrate2>
    [/sourcecode]

  7. Modificare il file xml file app/code/core/Mage/Shipping/etc/config.xml aggiungendo il seguente codice all’interno di default/carriers subito dopo la definizione di flatrate:
  8. [sourcecode language=”xml”]
    <flatrate2>
    <active>1</active>
    <sallowspecific>0</sallowspecific>
    <model>shipping/carrier_flatrate2</model>
    <name>Fixed</name>
    <price>5.00</price>
    <title>Flat Rate 2</title>
    <type>I</type>
    <specificerrmsg>This shipping method is currently unavailable. If you would like to ship using this shipping method, please contact us.</specificerrmsg>
    <handling_type>F</handling_type>
    </flatrate2>
    [/sourcecode]

Cancellate la cache, andate in sistem->configuration->shipping methods e trovere due spedizioni flat rate che potrete configurare come spedizione ordinaria e prioritaria.

Categorie
Blog

Carta di credito con Verified by Visa

Tutti coloro che acquistano online avranno potuto notare che da un anno circa è attivo sui sistemi di pagamento del circuito visa il nuovo sistema di sicurezza chiamato Verified By Visa.

Quando si parla di sicurezza, e in particolare di aumentare la sicurezza tutti ci troviamo d’accordo, ma dobbiamo stare attenti al fatto che a volte dietro una aumento della sicurezza non si possa nascondere qualcosa di diverso, tipo un doppio fine quale un profitto sull’ignoranza.

Tutte quelle che sto per scrivere non sono certezze, ma sensazioni di un professionista che lavora con clienti che vogliono vendere prodotti online e che si trova a lavorare con sistemi di pagamento disparati.

Ma in cosa consiste il sistema “Verified by visa”?

Al titolare di una carta che sottoscrive il verified by visa (pagando un quantità maggiore di denaro) viene richiesta una password di verifica ad ogni acquisto che effettua online con questa (quando l’esercente ha stipulato anche lui l’accordo; ad esempio banca sella con gestpay e banca unicredit con pagonline sono compatibili con il verified by visa, mentre paypal no).
Dopo avere inserito il numero di carta di credito il cliente viene rediretto in una pagina nella quale inserisce la sua password stabilita nel contratto verified by visa. Se la password è valida l’acquisto va a buon fine.

Questa può sembra una cosa ottima, in quanto aumenta la sicurezza e protegge i titolari di carta da frodi causate dalla perdita della carta, ma non è tutto bello come lo si fa sembrare.  Farò un elenco dei vantaggi e degli svantaggi che questo verified by visa sta portando.

Vantaggi

  • i possessori di carta si sentono più sicuri
  • frodi ridotte; per rubare la carta di credito si deve rubare anche la password

Svantaggi

  • Non tutti i sistemi di pagamento chiedono la password del verified by visa, ad esempio paypal non la chiede (penso perchè non sia convenzionato)
  • Molte carte di credito abilitano il verified by visa in automatico ma la password o non arriva o deve essere generata, capita quindi che l’utente sia redirezionato all’inserimento della password e non sappia cosa fare.
  • Gli acquisti ultimati ed andati a buon fine sonodiminuiti perchè le password vengono smarrite con facilità e la procedura di recupero è difficoltosa
  • Il costo è maggiore, pernsare che banca sella chiede circa il doppio fra attivazione e costo gestione annuale

Concludendo, voglio dire che se da un lato la sicurezza è maggiore per il cliente, gli acquisti sono “certi” per gli esercenti perchè i titolari di carta possono difficilmente contestare un acquisto con il sistema verified by visa e la percezione di sicurezza globale è migliorata, guardando le statistiche si può notare che le vendite sono diminuite, poichè questo procedimento causa molti pagamenti non portati a termine a causa delle smarrimento o non conoscenza della propria password.

Per quello che ne so, se fossi un esercente non attiverei il verified by visa, ma questa è solo la mia opinione 😉

Per informazioni potete andare sul sito di visa:

http://www.visaitalia.com/it/stampa__media/note_informative/verified_by_visa__febbraio_20.aspx

Categorie
Blog

Come controllare se un modulo è attivo?

Ciao,
questo è il primo di alcuni post veloci e sintetici nel quale do una soluzione a dei problematiche tecniche.

Tutti sappiamo che per attivare o disattivare un proprio modulo basta andare nella directory
[sourcecode language=”bash”]
app/etc/modules
[/sourcecode]

aprire trovare il proprio modulo chiamato Nome_Modulo.xml e impostare il tag a true o false come nel seguente caso:

[sourcecode language=”xml”]
<config>
<modules>
<Nome_Modulo>
<active>true</active>
<codePool>local</codePool>
</Nome_Modulo>
</modules>
</config>
[/sourcecode]

Quando si attiva un modulo vengono richiamati tutti i file delle cartelle del modulo ed in caso sovrascritti i file di core.
Ma se volessimo in un template utilizzare del codice solamente in base allo stato attivo o inattivo di un modulo?
Basta utilizzare la seguente porzione di codice:

[sourcecode language=”php”]
if(Mage::getConfig()->getModuleConfig(‘Nome_Modulo’)->is(‘active’, ‘true’)){
//codice eseguito nel caso di modulo attivo
}else{
//codice eseguito nel caso di modulo non attivo
}
[/sourcecode]
Ciao! Alla prossima

Categorie
Blog

Le funzionalità di Magento

In questo articolo andrò a fare una lista delle funzionalità di Magento divise per categorie o sezioni. Cercherò di integrare questa lista in futuro con i suggerimenti e/o le correzioni che mi arriveranno.

Amministrazione/Gestione dell’ecommerce

  • Multistore – possibilità di creare più ecommerce all’interno dello stesso sito, gestiti da uno o più amministratori. Questo è il caso in cui si vuole realizzare un e-commerce che è un aggregato di negozi, ovvero più negozi che rivendono all’interno dello stesso sito web. La distinzione tra i negozi può essere fatta per categorie prodotti oppure direttamente nella homepage con sezioni distinte (homepage dell’ecommerce che rimanda a tutti i negozi)
  • Pannello di amministrazione per la gestione dei prodotti (inventario), dei clienti (customer care con newsletter), degli ordini e delle vendite (reportistica inclusa)
  • Multilingue (disponibili moltissime lingue. La distinzione può essere fatta dall’utente oppure tramite la geolocalizzazione dell’ip del visitatore)
  • Supporto per le traduzioni (Magento da la possibilità di tradurre il sito in una qualsiasi lingua)
  • Multivaluta – possibilità di avere più valute presenti sul sito (ex: sito in Dollari, Sterline, Euro ecc..)
  • Ruoli utenti – possibilità di creazione ruoli utenti con privilegi limitati
  • Web Services – Possibilità di richiamare le api di magento tramite web services. Questo permette a magento di comunicare con software gestionali o applicazioni di terze parti
  • Classi di Imposte – Possibilità di avere classi di imposte personlizzabili per nazione, per tipologia cliente (azienda, privato)
  • CMS integrato per la creazione di pagine statiche. Viene utilizzato per creare le pagine istituzionali, ad esempio: chi siamo, condizioni di vendita, customer care, contattaci
  • Clientela suddivisa in gruppi – possibilità di distinguere clienti privati da aziende

Processo  di acquisto

  • Carrello può essere salvato
  • Supporto SSL
  • Checkout come utente registrato, come utente nuovo (con registrazione necessaria) o come utente guest (registrazione non necessaria)
  • Possibilità di inserire buoni sconto già nel carrello
  • Possibilità di stimare il costo delle spedizioni già nel carrello

Modalità di Pagamento

  • Bonifico Bancario
  • Contrassegno
  • Paypal (sia con account paypal che solo con carta di credito attraverso sistema paypal)
  • Banca Sella – pagamento con carta di credito attraverso il sistema Gestpay
  • Banca Unicredit – pagamento con carta di credito attraverso il sistema PagOnline
  • Banca Etruria – pagamento con carta di credito attraverso il sistema KeyClient
  • Authorize.net
  • Google Checkout

Modalità di Spedizione

  • Spedizione gratuita – possibilità di avere una spedizione a costo zero sempre o in caso di acquisti con valore superiore ad una certa soglia
  • UPS – integrazione con ups per la generazione del tracking number e della lettera di vettura da allegare al pacco
  • DHL
  • FedEx
  • USPS
  • Possibilità di avere Più spedizioni per ordine
  • Tracking del pacco attraverso l’account utente
  • Prezzo spedizione in base al costo, in base al peso, in base alla destinazione. Si può creare una tabella (nazione/costo) nella quale elencare tutti i costi di spedizine
  • Possibilità di spedire solamente in alcune zone/paesi

Gestione prodotti

  • Gestione prodotti da amministrazione – creazione, cancellazione, modifica
  • Inventario prodotti con gestione delle rimanenze. Magento ti comunica i prodotti che stanno per esaurirsi
  • Prodotti semplici – prodotto con una singola configurazione (ex: t-shirt rossa taglia M, senza possibilità di modificare le opzioni prodotto)
  • Prodotti configurabili – prodotto che permette al cliente di selezionare le opzioni disponibili. Ad esempio t-shirt disponibili in vari colori e taglie (quindi nella
  • scheda prodotto sarà visibile una tendina di scelta multipla per la selezione della taglia e del colore)
  • Prodotti raggruppati – un prodotto composto da più prodotti esistenti. (Può essere utili per vendere abbinamenti prodotti o prodotti che necessitano di altri per funzionare)
  • Prodotti bundle – Prodotti Kit, nei quali i clienti devono scegliere una quantità di opzioni (non strettamente necessarie). Questo può essere il caso della vendita di computer nella quale gli utenti devono selezionare hard disk, ram e tutti gli altri componenti.
  • Prodotti virtuali – prodotti virtuali che non vengono spediti e non vengono scaricati. Solitamente questi prodotti corrispondono ad un servizio offerto
  • Prodotti scaricabili – prodotti scaricabili. Ex: computer software, musica mp3, PC games.

Caratteristiche prodotto

  • Descrizione
  • Immagine con possibilità di ingrandimento
  • Immagini secondarie
  • Prodotti correlati
  • Prodotti Upsell – sono tutti i prodotti che vengono proposti in sostituzione al prodotto che viene osservato. Questi prodotti possono avere migliore qualità, possono fare ricavare maggiore margine.
  • Prodotti CrossSell – sono i prodotti che vengono acquisti nel carrello prima del pagamento. Sono come le caramelle, le gomme da masticare e le riviste prima del pagamento alla cassa
  • Quantità disponibile in magazzino
  • Prezzo
  • Prezzo per quantità
  • Recensioni prodotto
  • Tags per prodotto
  • Funzionalità Invia ad un amico
  • Disponibilità in magazzino

Servizio Clienti

  • Ogni cliente registrato ha una propria pagina chiamata “Account” nella quale può controllare lo storico ordini, le fatture, seguire le proprie spedizioni, aggiungere oggetti alla propria wishlist, inviare richieste al negozio
  • I clienti vengono notificati per ogni cambio stato dell’ordine; facciamo l’esempio di un ordine si trova “In attesa di pagamento”. Al momento in cui l’esercente (il proprietario del negozio ecommerce) nota l’arrivo del pagamento può cambiare stato dell’ordine impostandolo in “Pagato”; assieme a questo cambio di stato può anche notificare per email la cosa all’utente che riceverà una email e vedrà lo stato dell’ordine nel proprio account.

Magento per Iphone e Ipad

Magento ha di default un tema ottimizzato per iphone, che in pratica regola la risoluzione dello schermo e della grafica del sito adattandola alla risoluzione iphone. Per quanto riguarda l’ipad, avento questo una risoluzione maggiore, questo non ha problemi di sorta se si seguono gli standard del design di interfaccie.
Esiste anche la possibilità di acquistare una estension Magento che permette di convertire il proprio ecommerce in una applicazione scaricabile dall’Apple App Store. I passi sono i seguenti:

  • Installare l’estensione
  • Settare il proprio ecommerce tramite la nuova estensione (e testarlo) per renderlo compatibile con l’app
  • Acquistare la licenza Magento Mobile
  • Magento invierà l’applicazione all’App Store e questa diverrà disponibile al download tramite l’iphone/ipad.

Promozioni di marketing e strumenti

  • Newsletter clienti
  • Prodotti visti di recente
  • Prodotti correlati, upsell, crosssell
  • Invia ad un amico
  • Reportistica carrelli in corso, carrelli persi, vendite, prodotti più visti, prodotti più acquistati
  • Utenti online
  • Prodotti attualmente nel carrello

Ottimizzazione per i motori di ricerca

  • Tutte le url vengono riscritte per essere comprensibili e compatibili per l’ottimizzazione sui motori di ricerca
  • Mappa del sito
  • Meta tags per categoria, prodotti  e pagine statiche tramite cms
  • Google sitemap per lingua
  • Possibilità di stabilire le politiche di accesso dei motori di ricerca sull’ecommerce (NOINDEX,NOFOLLOW ecc..)

 

Queste sono solamente alcune delle funzionalità presenti in Magento e questa vuole essere solo una lista; con questo post non intendo spiegare i dettagli o approfondire le funzionalità, solo avere un riferimento per coloro che si approcciano a Magento per la prima volta e vogliono capire cosa permette di fare la piattaforma leggendo solamente un articolo di un blog.

 

Categorie
Blog

Cosa è magento?

Una descrizione generale

Magento è una piattaforma opensource per la creazione di siti ecommerce. E’ stato sviluppato dalla Varien, ed è basato sul framework php Zend. Adotta molte funzionalità di base ed è per questo che è considerato una delle migliori soluzioni per ecommerce attualmente disponibili.

Magento è disponibile in tre versioni:

  • Community – versione gratuita
  • Professional – 2995 $ all’anno
  • Enterprise –  12990 $ all’anno

La differenza tra le tre versioni disponibili è in funzionalità di frontend (maggior funzionalità visibili nel frontend del sito), funzionalità di backend (maggiore controllo da parte degli amministratori), ma soprattuto nel supporto, che nella comminuty è presente solo attraverso un forum (ma le risposte non sono garantite), nella professional è dato dai Magento Partners mentre nella Enterprise è fatto direttamente dalla Varien, cioè la società produttrice.

Funzionalità di Magento

  • Multistore, ovvero possibilità di avere più negozi in un unico ecommerce (sotto una unica amministrazione)
  • Pannello di amministrazione dettagliato, con reportistica, catalogo, clienti, ordini e tutto ciò che riguarda le vendite
  • Multilingua
  • Multivaluta (possibilità di cambiare valuta)
  • Ruoli utenti in amministrazione (è possibile creare ruoli utenti a cui concedere tutti i privilegi o solamente alcuni)
  • Design personalizzabili – vetrine del negozio personalizzabili
  • Design per negozio, ad ogni negozio può essere associata una vetrina, e quindi una grafica diversa
  • CMS integrato – possibilità di creare pagine stati a piacimento
  • Molteplici modalità di spedizione – è possibile configuarare una tabella di spedizioni per paese oppure integrare Magento con UPS, DHL, FedEx ecc..
  • Tracking della spedizione – possibilità di inviare l’utente sul sito dello spedizioniere e seguire lo stato della spedizione
  • Molteplici modalità di pagamento – Bonifico, Contrassegno, Paypal, Carta di credito con Banca Sella (Gestpay) Unicredit (Pagonline), KeyClient (Banca Etruria)
  • Distinzione tra indirizzo di spedizione e fatturazione
  • Checkout veloce (procedura di checkout in una sola pagina)
  • Possibilità di acquistare senza registrarsi (checkout as guest)
  • Possibilità di utilizzo di buoni sconto e/o codici promozionali
  • Gestione imposte IVA per paese

Dettagli Tecnici

Come già detto Magento è una piattaforma in php e database mysql. E’ basato su Zend framework e la struttura, come il modo di sviluppare il codice al suo interno rispecchia il pattern MVC (model-view-controller) come lo Zend framework. Il pregio di questa piattaforma è il grande numero di funzionalità che porta con se e la sua grande modularità che lo rendono facilmente estendibile, pulito (in termini di pulizia e comprensibilità di codice) e scalabile.

I requisiti di sistema di Magento sono i seguenti:

  • Sistema Linux o Windows (anche se si sconsiglia Windows per sistemi di produzione)
  • Web server Apache
  • PHP 5.2.0 o superiori e le seguenti estensioni php
    • PDO/MySQL
    • MySQLi
    • mhash
    • mcrypt
    • DOM
    • simplexml
  • Database MySQL 4.1.20 o superiore
  • Servizio di posta in uscita: un Sendmail-compatible Mail Transfer Agent (MTA) – Magento utilizza un smpt per inviare email per customer care ecc..

Il software lo si può scaricare dal sito ufficiale www.magentocommerce.com.

Categorie
Blog

Cosa è un ecommerce?

E-commerce oppure ecommerce oppure commercio elettronico, vendita online di prodotti, siti web che vendono oggetti, pagamenti con carte di credito…..o mio dio… questo mondo fa paura e mi viene voglia di non continuare a scrivere o leggere.

 

Siamo nel 2011, ed il commercio elettronico, almeno in Italia, se pur vecchio di nascita (dicono sia nato nel 1983, io avevo un anno) è visto come qualcosa di pericoloso, oscuro, “l’uomo nero” di internet.

Bhe, queste cose possono essere pur vere, se dettate dall’ignoranza e dalla non conoscenza, o dette dalla bocca di chi preferisce andare a comprare un cd al negozio sotto casa, ma come dice una persona molto saggia (non posso adesso nel primo post rivelarvi il nome) ognuno vibra di una certa onda e se qualcosa lo attrae è perchè quella cosa vibra nella stessa direzione o con la stessa frequenza; tutto questo per dire che mi padre, non andrà mai a comprare qualcosa online non perchè non gli piaccia, o perchè non è capace, ma perchè non è spinto dall’interesse di farlo.

Quindi l’interesse di potere accedere ad una gamma di prodotti più elevata, di poter afferrare delle occasioni a prezzi ribassati (clienti), di poter fare i soldi o vendere ad un target di utenti pressochè infinito (esercente, o rivenditore online) spinge le persone ad investire e/o spendere denaro, e come sappiamo (purtroppo o per fortuna a seconda dei punti di vista) sono i soldi che muovono il tutto.

 

Tutta questa introduzione filosofica per dire che l’informazione e la conoscenza sono molto importanti sia per coloro che vogliono spendere i loro soldi online, sia per coloro che vogliono investire denaro per vendere prodotti attraverso internet.

Questo blog nasce per questo, io mi chiamo Iacopo Pecchi, nasco come programmatore, e dopo qualche anno di esperienza, mi trovo a lavorare divertendomi sulle piattaforme e-commerce, ovvero tutti quei software che permettono di creare siti internet per vendere prodotti online.

La mia esperienza è nata con Zencart, Prestashop e per adesso si è stabilizzata su Magento, quella che ritengo l’attuale soluzione migliore in termini di qualità/prezzo ed in termini di sviluppi, integrazioni e personalizzazioni.