magento login Sembra incredibile ma Magento, la più completa piattaforma per l'e-commerce che conosco, non possiede una funzione nativa per consentire di riservare l'accesso ad uno Store (o ad alcune parti del catalogo) agli utenti già registrati.

Eppure è una cosa molto utile che esiste su qualsiasi cms. Ti consente di realizzare una piattaforma b2b, un negozio privato o di aumentare il numero degli iscritti al sito. Sul magento connect ci sono diverse estensioni che promettono di risolvere il problema ma molte presentano dei bug o non supportano il multistore, ce n'è persino una che sovrascrive interamente la navigazione per categorie. In più non è consigliabile installare troppi componenti di terze parti su magento perchè possono rallentare il sito o creare problemi sul lungo periodo se non adeguatamente manutenute perciò ho ovviato reindirizzando tutti gli utenti non loggati alla pagina di login.

Come reindirizzare gli ospiti alla pagina di login di Magento

Innanzitutto va realizzata la vetrina del nostro negozio. Io ho scelto di visualizzare una selezione di prodotti random. Quindi ho aggiunto alla mia home page (in CMS pagine) il codice:

 
{{block type="catalog/product_list" name="home.catalog.product.list" 
alias="products_homepage" template="catalog/product/product-list.phtml"}}

dove product-list.phtml è la mia vetrina, ottenuta duplicando la porzione di html list.phtml in app/design/frontend/default/[mio tema]/[mio pacchetto]/catalog/product/e personalizzandola secondo le mie esigenze.

Ma il bello deve ancora arrivare. Voglio che da questo momento in poi chiunque capiti sul mio sito senza essere registrato venga reindirizzato alla pagina di login. Andiamo alla root /template/page del tema che stiamo usando, troveremo tutti i file che controllano i possibili layout che possiamo assegnare alle varie parti del sito.

In ciascuno di essi incolliamo il seguente codice php:

 
    $redirect_url = Mage::getUrl('customer/account/login/');
    $current_url = Mage::helper('core/url')->getCurrentUrl();
    if((!$this->helper('customer')->isLoggedIn()) && ($current_url != $redirect_url)){
    Mage::app()->getFrontController()->getResponse()->setRedirect($redirect_url);
    }

Questo fa sì che magento controlli se l'utente è loggato if((!$this->helper('customer')->isLoggedIn()) e reindirizzi ad una pagina precisa getUrl('customer/account/login/'). 

Possiamo utilizzare lo stesso sistema anche per reindirizzare da qualche altra parte, ad esempio ad un'altra vetrina, sostituendo customer/account/login/ con l'url relativo della pagina a cui puntiamo. 

(L'articolo è stato scritto il 03/6/2013 e lo script è testato su Magento Community 1.7)

blog comments powered by Disqus