L'ajout d'un champ personnalisé pour Magento module d'abonnement
L'abonnement à la newsletter, module Magento a qu'un seul champ (e-mail) par défaut. Après j'ai ajouter un champ supplémentaire à la forme (pays), comment puis-je obtenir le formulaire de données à afficher dans le Magento back-end et d'envoyer un e-mail à un destinataire prédéfini? Merci.
OriginalL'auteur pixeltocode | 2010-07-01
Vous devez vous connecter pour publier un commentaire.
Il ya quelques choses que vous devez prendre soin de faire ce travail:
Voici comment vous pouvez faire toutes ces choses:
Ad. 1)
À l'aide de phpMyAdmin, mySQL en ligne de commande, ou tout ce qui est votre préféré DB la méthode de manipulation, d'ajouter une nouvelle colonne "pays" comme, par exemple, de type varchar(100) à la newsletter_subscriber table.
Ad. 2)
Magento sera automatiquement vous donner accès à du nouveau sur le terrain à travers le getCountry() et setCountry() méthodes sur la Mage_Newsletter_Model_Subscriber objet. La seule chose à ne pas faire est d'enregistrer votre domaine vers la DB après qu'il a été modifié avec le code quelque part dans le système. Pour l'obtenir sauvé, vous avez besoin de modifier _prepareSave(Mage_Newsletter_Model_Subscriber $abonné) fonction trouvée dans Mage_Newsletter_Model_Mysql4_Subscriber (app/code/core/Mage/Newsletter/Model/Mysql4/Subscriber.php). Assurez-vous de faire une copie locale du fichier et de ne pas modifier le fichier core. Voici ce que vous devez ajouter:
Ad. 3)
Vous devrez modifier (une copie locale de) le fichier app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php. La méthode que vous cherchez est appelé _prepareColumns(). Là, vous verrez une série d'appels à $this->addColumn(). Vous avez besoin d'ajouter un appel correspondant à votre champ "Pays" avec le code suivant:
Si vous souhaitez que le champ apparaît à la fin de la grille (comme la dernière colonne) ajouter comme le dernier appel, sinon il serrer les appels exactement où vous le souhaitez pour finir dans l'admin.
Ad. 4)
C'est une partie je n'ai pas eu à faire dans ma personnalisation de l'magento newsletter, de sorte qu'il sera essentiellement théorique. L'abonnement se produit dans le contrôleur situé à app/code/core/Mage/Newsletter/controllers/SubscriberController.php. Voici le code de la newAction méthode avec mes propositions de changement:
En passant par les étapes ci-dessus doit prendre soin de la plus grande partie de votre problème. Permettez-moi de savoir comment cette dernière partie a fonctionné, je n'ai pas eu la chance de le tester.
Une fois que vous avez votre champ supplémentaire dans l'objet de l'Abonné, vous pouvez faire ce que vous voulez avec elle. Je n'ai pas vraiment obtenir ce que vous voulez dire par
Si vous pouvez expliquer que je vais essayer de vous aider avec cette partie aussi.
Edition - comment envoyer un mail quand quelqu'un s'abonne
Il suffit d'ajouter le code suivant au contrôleur après la partie qui ajoute un pays à un objet de l'abonné.
il n'y a pas de _prepareSave fonction dans le fichier que vous avez dit.. je suis en utilisant 1.4.0.1... ou que je suis juste en manque de quelque chose?
Il me manque aussi le _prepareSave fonction. Ne pouvez pas trouver n'importe où dans app/code/
Je suis à l'aide de 1,7 et n'a pas trouvé le _prepareSave dans le fichier que vous avez mentionné ci-dessus. S'il vous plaît laissez-moi savoir comment le faire? Merci à l'avance.
désolé les gars, je ne travaille pas avec magento plus, ne peut donc pas commenter sur les changements dans les dernières versions. J'espère que d'autres utilisateurs peuvent participer à l'...
OriginalL'auteur silvo
Si vous souhaitez ajouter des champs personnalisés pour Magento bulletin d'information de l'abonné (par exemple subscriber_name), vous devez effectuer les opérations suivantes:
newsletter_subscriber
tableDans l'observateur, vous pouvez obtenir votre champ personnalisé de la valeur de la demande et de l'attribuer à l'abonné objet:
Mise à JOUR:
Voici l'article détaillé expliquant comment ajouter un champ Pays
Aussi, j'ai créé un module gratuit, il est disponible sur le GitHub
C'est certainement la solution.... ce code a pour aller dans config.xml pour obtenir que cela fonctionne? Je sais qu'il commence avec frontend> <événements> <newsletter_subscriber_save_before> <observateurs> mais je ne peux pas savoir ce que la prochaine partie..
La version de Magento est-ce pour? Je ne trouve pas les événements pour s'abonner à l'action.
cet événement est généré par
Mage_Newsletter_Model_Subscriber
- vous ne pouvez pas trouver explicitement par le nom de l'événement.ici vous pouvez trouver des informations sur la création d'observateurs dans Magento stackoverflow.com/questions/2048458/.... Et voici des explications plus détaillées magentocommerce.com/wiki/5_-modules_and_development/0-_module_development_in_magento/customizing_magento_using_event-observer_method#customize_magento_using_eventobserver
OriginalL'auteur Roman Snitko
Ajoutant à la accepté de répondre, vous pouvez aussi sortir avec un peu plus facile si vous êtes en train d'ajouter une date, datetime ou timestamp-type de la colonne.
Dans mon cas, je voulais ajouter un "Abonné à la Date" à ma grille. Pour ce faire, j'ai écrit le script de mise à niveau, colonne de type TIMESTAMP et la valeur par défaut étant CURRENT_TIMESTAMP. De cette façon, lorsque la ligne est ajoutée, la date/heure actuelle est enregistrée.
Ensuite, tout ce que vous avez à faire est d'ajouter à votre bloc de personnalisations. Je vous suggère de le faire par l'extension Magento grille bloc plutôt que de faire de la locale codepool remplacer. De cette façon, vous avez seulement besoin de remplacer _prepareColumns();
OriginalL'auteur Brian F
Vieux thread mais si quelqu'un a la même question, il y a une extension qui ajoute des champs pour le sexe, le prénom et le nom et le rend disponible dans le backend de la grille pour l'exportation via xml/csv: http://www.magentocommerce.com/magento-connect/extended-newsletter-subscription-for-guests.html
Peut-être vous pouvez étendre le code pour l'adapter à vos besoins.
OriginalL'auteur silenzium