Das Newsletter Subscription Modul in Magento hat standardmäßig nur ein Feld (Email). Nachdem ich dem Formular ein zusätzliches Feld hinzugefügt habe (z. B. Land), wie kann ich die Formulardaten im Magento-Backend anzeigen lassen und als E-Mail an einen voreingestellten Empfänger senden? Danke.
Es gibt einige Dinge, auf die Sie achten müssen, damit dies funktioniert:
So können Sie all diese Dinge tun:
Anzeige 1)
Fügen Sie mit der mySQL-Befehlszeile von phpMyAdmin oder Ihrer bevorzugten DB-Bearbeitungsmethode eine neue Spalte "country" als beispielsweise varchar (100) in die Tabelle newsletter_subscriber ein.
Anzeige 2)
Magento gibt Ihnen automatisch Zugriff auf das neue Feld über die Methoden getCountry () und setCountry () für das Objekt Mage_Newsletter_Model_Subscriber. Das einzige, was es nicht tun wird, ist, das Feld in der DB zu speichern, nachdem es irgendwo im System mit Code geändert wurde. Um es zu speichern, müssen Sie die Funktion _prepareSave (Mage_Newsletter_Model_Subscriber $ subscriber) in Mage_Newsletter_Model_Mysql4_Subscriber (app / code / core / Mage / Newsletter / Model / Mysql4 / Subscriber.php) ändern. Stellen Sie sicher, dass Sie zuerst eine lokale Kopie der Datei erstellen und die Kerndatei nicht ändern. Folgendes müssen Sie hinzufügen:
%Vor%Anzeige 3)
Sie müssen ( eine lokale Kopie von ) die Datei app / code / core / Mage / Adminhtml / Block / Newsletter / Subscriber / Grid.php ändern. Die Methode, nach der Sie suchen, heißt _prepareColumns (). Dort sehen Sie eine Reihe von Aufrufen von $ this- & gt; addColumn (). Sie müssen einen entsprechenden Anruf für Ihr Feld "Land" mit dem folgenden Code hinzufügen:
%Vor%Wenn das Feld am Ende des Gitters angezeigt werden soll (als letzte Spalte), fügen Sie es als letzten Aufruf hinzu, andernfalls drücken Sie es zwischen den bestehenden Aufrufen genau dorthin, wo es im Admin enden soll.
Anzeige 4)
Dies ist ein Teil, den ich in meiner Anpassung des magento-Newsletters nicht machen musste, also wird es hauptsächlich theoretisch sein. Die Subskription erfolgt im Controller unter app / code / core / Mage / Newsletter / controllers / SubscriberController.php. Hier ist der Code der newAction-Methode mit meinen vorgeschlagenen Änderungen:
%Vor%Die obigen Schritte sollten den größten Teil Ihres Problems berücksichtigen. Lass mich wissen, wie dieser letzte Teil funktioniert hat, da ich keine Chance hatte, ihn zu testen.
Sobald Sie Ihr zusätzliches Feld im Subscriber-Objekt haben, können Sie damit machen, was Sie wollen. Ich habe nicht wirklich verstanden, was du meinst
wird als E-Mail an einen voreingestellten Empfänger gesendet
Wenn Sie erklären können, dass ich versuchen werde, Ihnen auch mit diesem Teil zu helfen.
Bearbeiten - So senden Sie eine E-Mail, wenn jemand abonniert hat
Fügen Sie dem Controller nach dem Teil, der Land zu einem Teilnehmerobjekt hinzufügt, einfach den folgenden Code hinzu.
%Vor%Wenn Sie einige benutzerdefinierte Felder für Magento-Newsletter-Abonnenten hinzufügen möchten (zum Beispiel Teilnehmername ), sollten Sie Folgendes tun:
newsletter_subscriber
table Im Beobachter können Sie den Wert Ihres benutzerdefinierten Feldes aus der Anfrage abrufen und dem Objekt des Abonnenten zuweisen:
%Vor%
UPDATE :
Hier ist der detaillierte Artikel, der erklärt, wie das Feld Country
Wenn Sie die akzeptierte Antwort hinzufügen, können Sie dies auch etwas leichter haben, wenn Sie eine date-, datetime- oder timestamp-artige Spalte hinzufügen.
In meinem Fall wollte ich ein "Abonniert am Datum" zu meinem Raster hinzufügen. Dazu habe ich mein Upgrade-Skript geschrieben, wobei der Spaltentyp TIMESTAMP und der Standardwert CURRENT_TIMESTAMP ist. Auf diese Weise wird beim Hinzufügen der Zeile das aktuelle Datum / die aktuelle Uhrzeit aufgezeichnet.
Dann müssen Sie nur Ihre Blockanpassungen hinzufügen. Ich würde vorschlagen, dies zu tun, indem ich den Grid-Block von Magento erweitere, anstatt die lokale Codepool-Überschreibung durchzuführen. Auf diese Weise müssen Sie nur _prepareColumns ();
überschreibenAlter Thread, aber wenn jemand dieselbe Frage hat, gibt es eine freie Erweiterung, die Felder für Geschlecht, Vorname und Nachname hinzufügt und sie im Backend-Gitter für den Export über xml / csv zur Verfügung stellt: Ссылка
Vielleicht können Sie den Code auf Ihre Bedürfnisse erweitern.
Tags und Links magento subscription newsletter