Seite 1 von 3

Newsletter auf Name und Vorname erweitern

Verfasst: Do 4. Mai 2006, 13:48
von Martin S.
Hallo,

ich verwende die Version 4.6.8 und haben den HTML-Newsletter eingesetzt, funktioniert super. Jetzt habe ich noch eine Frage, wie kann ich eine Erweiterung der Felder für die Newsletteranmeldung machen.

Ich würde gerne Name und Vorname getrennt in die Datenbank eintragen lassen, wo muss ich da ansetzen?

Danke

Verfasst: Do 4. Mai 2006, 14:26
von php0815
Style-> HTML Editor-> newsletter_form.html
Style -> Module-> Newsletter Handler
Modul Output: if ($frontenduser = $frontendusers->next())
Ca zeile 170

Mache gerade eine ausführliche anmeldung mit Kundennummer und allen personenangaben werde c.a. mitte Juni fertig sein.

Verfasst: Do 4. Mai 2006, 14:34
von Martin S.
OK, danke, wenn du was fertig hast gib Bescheid, dann kann ich nämlich auf Zusatzsoftware verzichten und nur noch Contenido einsetzen, das wäre echt super.

Danke

Verfasst: Do 4. Mai 2006, 16:53
von php0815
Wie gesagt es dauert noch bis mitte Juni mache das ganze in der Freizeit.
Wen ich am Wochenende Zeit habe setze ich das ganze was ich bis jetzt habe ins Forum.

Die Funktionen sind folgende:
Frontenduser meldet sich beim Newsletter an.
Bei der letzten bestätigungsMail wird eine Ku-Nr hinzugefügt.
Mit der Ku_Nr. und Passwort vom Newsletter kann der Frontenduser seine Persönliche Adressdaten verwalten.

Das ganze funzt schon, ist aber noch auf meine Datensätze zugeschnitten.
Muß ein neues ERD schreiben damit das ganze dynamischer wird, habe bis jetzt alles in einer Tabelle.

Gruß
Horst

Verfasst: Do 4. Mai 2006, 17:54
von HerrB
Ähm, nicht, dass ich Dich aufhalten möchte ... was spricht gegen die vorhandenen Techniken?

Der Newsletter/Empfänger-Bereich wird mit Sicherheit auch noch für die Plugins erweitert.

Gruß
HerrB

Verfasst: Do 4. Mai 2006, 18:22
von Martin S.
Hallo HerrB, falls du einen anderen Lösungsansatz für mein Problem hast, oder genau weißt wo ich dran drehen muss, dann nehme ich diesen Tipps auch gerne wahr. Benötige eigentlich nicht so eine Masterlösung.

Verfasst: Fr 5. Mai 2006, 00:10
von HerrB
Mache es so:
Erweitere die Module wie von php0815 angedeutet. Es gibt dort die Stelle, wo der Newsletter-Empfänger eingetragen wird (Output, Handler-Modul):

Code: Alles auswählen

$recipient = $objRecipients->create(
(kommt dreimal vor)

Jeweils direkt darunter ergänzt Du (also dreimal):

Code: Alles auswählen

$recipient->setProperty("contact", "lastname", $_REQUEST["txtLastName"]);
$recipient->setProperty("contact", "firstname", $_REQUEST["txtFirstName"]);
(txtLastName bzw. txtFirstName ist dann im Form-Modul der Name des jeweiligen Feldes)

Nun änderst Du die class.newsletter.php (Funktion send, Ausschnitt):

Code: Alles auswählen

   $to = $recipient->get("email");
            $name = $recipient->get("name"); 

            if (empty ($name)) 
            { 
               $name = $to; 
            } 
            $key = $recipient->get("hash"); 

            if (strlen($key) == 30) 
            { // Prevents sending without having a key 
                        $message2 = str_replace("MAIL_NAME", "$name", $message); 
                        $message2 = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".$key, $message2); 
                        $message2 = str_replace("MAIL_CHANGE", $path."change=".$key, $message2); 
                        $message2 = str_replace("MAIL_STOP", $path."stop=".$key, $message2); 
                        $message2 = str_replace("MAIL_GOON", $path."goon=".$key, $message2);
in

Code: Alles auswählen

   $to = $recipient->get("email");
            $name = $recipient->get("name"); 

            if (empty ($name)) 
            { 
               $name = $to; 
            } 
            $key = $recipient->get("hash"); 

            if (strlen($key) == 30) 
            { // Prevents sending without having a key
                        $message2 = str_replace("MAIL_NAME", "$name", $message);
                        $message2 = str_replace("MAIL_FIRSTNAME", $recipient->getProperty("contact", "firstname"), $message2); 
                        $message2 = str_replace("MAIL_LASTNAME", $recipient->getProperty("contact", "lastname"), $message2);  
                        $message2 = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".$key, $message2); 
                        $message2 = str_replace("MAIL_CHANGE", $path."change=".$key, $message2); 
                        $message2 = str_replace("MAIL_STOP", $path."stop=".$key, $message2); 
                        $message2 = str_replace("MAIL_GOON", $path."goon=".$key, $message2);
Natürlich musst Du an die class.newsletter.php bei jedem Update denken.

Das ist aber ansonsten kompatibel zu Updates und Du musst nix an der DB ändern...

Das man in den Newsletter dann MAIL_FIRSTNAME und MAIL_LASTNAME schreiben muss, muss man dann wissen. Wenn man es sehen soll, musst Du Dir die contenido/includes/include.newsletter_edit.php ansehen.

Gruß
HerrB

Verfasst: Fr 5. Mai 2006, 04:37
von Martin S.
Danke.
Wenn ich das einbaue bekomme ich einen Fehler
Fatal error: Call to a member function setProperty() on a non-object in /home/webuser/.../www/cms/front_content.php(792) : eval()'d code on line 1102


Bei:

Code: Alles auswählen

$objRecipient->setProperty("contact", "lastname", $_REQUEST["txtLastName"]);
Warum denn contact?
Und wo sind die Felder in der Datenbank für Name und Vorname?
Oder hast du nicht alle Punkte aufgegührt die ich Editieren muss?

Verfasst: Fr 5. Mai 2006, 11:09
von php0815
HerrB hat geschrieben:Ähm, nicht, dass ich Dich aufhalten möchte ... was spricht gegen die vorhandenen Techniken?

Der Newsletter/Empfänger-Bereich wird mit Sicherheit auch noch für die Plugins erweitert.
Gegen die vorhandenen Techniken spricht nichts.
Nur zur zeit gibt es die erweiterung so wie ich sie haben will noch nicht, mir geht es nicht nur um die Adressdaten sondern um mehr.
Da ich ein Hobbyprogramierer bin ist es für mich ein lernefekt.
Und ich möchte ein eigenes erfolgserlebniss haben.
Nur auf fertige dinge zurückzugreifen macht mir kein Spass.

Verfasst: Fr 5. Mai 2006, 16:22
von HerrB
@php0815:
Ja, kein Problem, kann ich nachvollziehen. Meine Frage zielte mehr nach bestimmten Problemen, auf die Du gestoßen bist (und deswegen einen anderen Ansatz verfolgen willst/musst).

@Martin S.:
Ja, sorry, es muss $recipient->setProperty... heißen (statt $objRecipient).

Wenn ich die Zeit finde, ergänze ich noch was, so dass Du die Angaben auch im Backend sehen kannst.

Code: Alles auswählen

Warum denn contact?
Ist einfach ein Typ. Wenn Du diesen verwendest, wird es später keine Probleme mit Weiterentwicklungen geben.

Code: Alles auswählen

Und wo sind die Felder in der Datenbank für Name und Vorname?
Es gibt keine (das ist das Schöne an der Lösung). Die Daten werden einfach als Eigenschaft des Empfängers gespeichert. Technisch liegen sie in der con_properties.

Code: Alles auswählen

Oder hast du nicht alle Punkte aufgegührt die ich Editieren muss?
Doch, aber ich habe mich vertippt.

Gruß
HerrB

Verfasst: Mo 8. Mai 2006, 12:10
von Martin S.
Habe die Anpassungen vorgenommen und Name Vorname wird gespeichert und wird beim Versenden der Email berücksichtigt. Danke

Einziges Problem, wie bekomme ich denn eine korrekte Anzeige im Bereich Extras/Newsletter/Empfänger hin, hier wird nur der Name angezeigt, jedoch nicht Vorname und Nachname

Danke

Verfasst: Mo 8. Mai 2006, 15:28
von HerrB
*Sigh*
Wenn ich die Zeit finde, ergänze ich noch was, so dass Du die Angaben auch im Backend sehen kannst.
Gruß
HerrB

Verfasst: Mo 8. Mai 2006, 15:43
von Martin S.
OK alles klar, auf jeden Fall schon mal besten Dank

Verfasst: Mo 8. Mai 2006, 23:59
von HerrB
Alles, was Du brauchst (auch das Update!) findest Du hier:
http://www.contenido.org/forum/viewtopic.php?t=12807

Würde mich über einen Test freuen. Ja, die class.newsletter.php musst Du wieder überschreiben (die neue Version bietet bereits die Berücksichtigung der Felder beim Versand).

Bitte alle Informationen beachten.

Gruß
HerrB

Verfasst: Di 9. Mai 2006, 07:05
von Martin S.
Wenn das mal keine geniale Lösung ist, super.

Muss ich eigentlich die von dir aufgeführten Anpassungen aus den vorherigen Treads ebenfalls machen oder reicht zukünftig nur das Plugin?