Le module d'abonnement Newsletter à Magento n'a qu'un seul champ (email) par défaut. Après avoir ajouté un champ supplémentaire au formulaire (disons pays), comment puis-je obtenir le formulaire des données à afficher dans le back-end Magento et être envoyé sous forme de courrier électronique à un destinataire prédéfini? Merci. P>
4 Réponses :
Il y a quelques points que vous devez prendre soin de faire ce travail:
Voici comment vous pouvez faire toutes ces choses: p>
ad. 1) p>
Utilisation de phpmyAdmin, de la ligne de commande MySQL ou quelle que soit votre méthode de manipulation de DB préférée, ajoutez une nouvelle colonne "Pays" comme, disons, Varchar (100) à la table Newsletter_subscriber. P> ad. 2) P>
Magento vous donnera automatiquement accès au nouveau champ via les méthodes getcountry () em> et SetCountry () em> sur l'objet Mage_Newsletter_model_subscriber. La seule chose qu'il ne fera pas, c'est enregistrer votre champ à la base de données après avoir été modifiée avec du code quelque part dans le système. Pour que cela vous a sauvegardé, vous devez modifier la fonction _Preparesave (mage_newsletter_model_subscriber $ abonné) trouvée dans mage_newsletter_model_mysql4_subscriber (app / code / noyau / mage / mage / modèle / mysql4 / abonné.php). Assurez-vous d'effectuer une copie locale du fichier en premier et de ne pas modifier le fichier principal. strong> Voici ce que vous devez ajouter: P> $mail = new Zend_Mail();
$mail->setBodyHtml("New subscriber: $email <br /><br />Country: ".$this->getRequest()->getPost('country'));
$mail->setFrom("youremail@email.com")
->addTo("admin@mysite.com")
->setSubject("Your Subject here");
$mail->send();
merci pour une réponse brillante. 'être envoyé comme un email .. "signifie que j'aimerais que les informations d'abonné (e-mail et pays dans ce cas) soient envoyées sous forme de courrier électronique à l'administrateur (dis admin@mysite.com). Donc, j'ai ajouté l'information à la base de données et envoyé comme un email aussi. Merci
Il n'y a pas de fonction NREPARESAVE dans le fichier que vous avez mentionné .. J'utilise 1.4.0.1 ... ou je manque simplement quelque chose?
Je manque également la fonction de préparezave. Ne peut pas le trouver nulle part dans l'application / code /
@silvo J'utilise 1,7 et je n'ai trouvé pas le numéro de référence dans le fichier que vous avez mentionné ci-dessus. S'il vous plaît laissez-moi savoir comment faire? Merci d'avance.
Désolé gars, je ne travaille plus avec Magento, alors ne pouvez pas commenter les modifications apportées aux dernières versions. Espérons que d'autres utilisateurs peuvent employer ...
Si vous souhaitez ajouter des champs personnalisés pour l'abonné de la newsletter Magento (par exemple Dans l'observateur, vous pouvez obtenir la valeur de votre champ personnalisé à partir de la demande et l'affecter à l'objet de l'abonné: p> Voici l'article détaillé expliquant Comment ajouter le champ de pays
En outre, j'ai créé un module gratuit, il est disponible sur le Github P> P>
Newsletter_subscriber code> Table Li>
Mise à jour forte>: P>
Cette solution est plus simple qu'il devrait être récompensé imho
Ceci est définitivement la solution .... Quel code doit entrer dans Config.XML pour que cela fonctionne? Je sais qu'il commence avec frontend> <événements>
Pour quelle version de Magento est-ce? Je ne trouve aucun événement pour une action de souscription.
@AdamMoss Cet événement est généré par mage_newsletter_model_subscriber code> - Vous ne pouvez pas le trouver explicitement par nom d'événement.
@Webflakestudio merci. Je ne sais pas pourquoi mais cette fonction ne fonctionne pas pour le moment. La table des abonnés a à la fois un prénom et un nom de famille, mais j'ai aussi essayé cela et cela ne fonctionnera toujours pas: Abonné $ abonné-> SetFirstName ($ prénom); b> Savez-vous ce que le code est Pour cela sur 1,5?
Je viens de remarquer que la table indique "Prénom du client" et "Nom du client" - Cela signifie-t-il que les attributs de nom ne peuvent être utilisés que par les clients et non des abonnés généraux? Peu importe ce que j'essaie, je ne peux pas sembler obtenir un abonné d'avoir autre chose qu'une adresse email.
@Adammoss Oh, j'ai oublié de dire que vous devez réellement modifier la table des abonnés. J'ai mis à jour ma réponse ci-dessus.
@Webflakestudio ah qui fait beaucoup plus de sens - travaille maintenant! Merci :)
@WebFlakEStudio Je dispose de quelques problèmes en mettant la mise en œuvre de cela, pourriez-vous m'informer quel fichier mettez l'observateur?
@ Xand94 Ici, vous trouverez ici des informations sur la création d'observateurs à Magento Stackoverflow.com/Questtions/2048458/... . Et ici une explication plus détaillée MagentOcommerce.com/wiki/5_- modules_and_développement / 0 i> -_ modul e_development_in_mag Ento / Customizing_mag Ento_USHED_Event-OB ERVER_METHOD # CustomI ZE_MAGENTO_USIAN_EVE NTOBSERVER
Qu'en est-il de l'affichage de la grille dans le backend? Ce code va-t-il mettre à jour aussi?
Non, vous devriez faire des modifications supplémentaires à la grille.
@ROMANSNITKO J'utilise 1.7 Et je ne suis pas un développeur, vous ne pouvez pas me dire dans quel fichier je dois mettre le code que vous avez mentionné ci-dessus et comment apporter des modifications à la grille?
Ajout à la réponse acceptée, vous pouvez également vous en tirer un peu plus facile si vous ajoutez une colonne de type, dateTime ou horodatage. P>
Dans mon cas, je voulais ajouter un "souscrit à la date" à ma grille. Pour ce faire, j'ai écrit mon script de mise à niveau, type de colonne étant horodatage et la valeur par défaut en cours de courant_TMESTAMP. De cette façon, lorsque la ligne est ajoutée, la date / heure actuelle est enregistrée. P>
Ensuite, tout ce que vous avez à faire est d'ajouter vos personnalisations de blocs. Je suggérerais de le faire en étendant le bloc de la grille de Magento plutôt que de faire le remplacement du code de code local. De cette façon, il vous suffit de remplacer _preparecolumns (); p>
Old thread, mais si quelqu'un a la même question, il y a une extension gratuite, qui ajoute des champs pour le sexe, le nom de famille et le nom de famille et le rend disponible dans la grille de backend pour l'exportation via XML / CSV: http://www.magentocommerce.com/magento-connect/extenture-Newsletter-subscription- pour les invités.html p>
Peut-être que vous pouvez étendre le code pour répondre à vos besoins. P>