Nativement dans Magento, l’inscription à la newsletter se fait depuis une page Abonnements à la newsletter accessible depuis la navigation contextuelle du compte client.

Le but de ce tuto est de déplacer la fonctionnalité directement dans la page Espace de travail du compte.

Surcharger le template info.phtml
du module Customer:
Le template app/design/frontend/base/default/template/customer/account/dashboard/info.phtml
qui affiche la section informations du compte (cf. capture #2) est à copier en l’état et à coller sous app/design/frontend/rwd/[votre_theme]/template/customer/account/dashboard/info.phtml
.
Créer un nouveau template form.phtml
sur la base du template newsletter.phtml
du module Customer :
Le template app/design/frontend/base/default/template/customer/form/newsletter.phtml
qui affiche nativement la checkbox d’inscription à la newsletter dans la page Abonnements à la newsletter (cf. capture #1) est à copier en l’état et à coller sous app/design/frontend/rwd/[votre_theme]/template/customer/account/dashboard/newsletter/form.phtml
.
Attention : dans ce cas, on change le chemin et le nom du fichier par rapport à l’original car ce dernier demeure exploité dans le site (page Abonnements à la newsletter) et ne doit pas faire l’objet de modifications de manière à continuer de s’afficher et de fonctionner correctement.
Le template form.phtml
constitue ainsi un nouveau bloc qu’il conviendra de déclarer dans un fichier Layout.
Déclarer le template form.phtml
nouvellement créé dans un fichier Layout :
Si il n’existe pas déjà, créer un fichier app/design/frontend/rwd/[votre_theme]/layout/local.xml
et ajoutez-y le code suivant pour déclarer votre nouveau template /customer/account/dashboard/newsletter/form.phtml
:
1 2 3 4 5 |
<customer_account_index> <reference name="customer_account_dashboard_info"> <block type="customer/newsletter" name="customer_newsletter" template="customer/account/dashboard/newsletter/form.phtml" /> </reference> </customer_account_index> |
Modification des templates :
Dans info.phtml
repérer la ligne <?php /* Extensions placeholder */ ?>
(ligne 60 si vous partez bien du fichier sus-nommé) et, juste en dessous, placez le code suivant :
1 |
<?php echo $this->getChildHtml('customer_newsletter')?> |
La valeur de getChildHtml()
doit être la même que celle de l’attribut <block name="" />
correspondant au bloc déclaré dans le fichier layout (local.xml
dans notre exemple) comme celui qui embarque le code du formulaire.
Dans form.phtml
repérer la ligne <form action="<?php echo $this->getAction() ?>" method="post" id="form-validate">
(ligne 32 si vous partez bien du fichier susnommé) et la remplacer par :
1 |
<form action="<?php echo $this->getUrl('newsletter/manage/save') ?>" method="post" id="form-validate"> |
