Seite 1 von 2
Plugin: Empfänger/Recipients
Verfasst: Mo 8. Mai 2006, 23:50
von HerrB
Es steht nun ein Recipients-Plugin zur Verfügung, mit dem man für jeden Empfänger zusätzliche Informationen speichern kann (z.B. Vor- und Nachname).
Es ist als Beispiel-Plugin für eigene Erweiterungen gedacht.
Empfänger-Plugin
Was bei eigenen Plugins zu beachten ist:
- Jede zusätzliche Information bedeutet pro Newsletter-Empfänger eine weitere Datenbankabfrage - man sollte also möglichst wenige Informationen anlegen
- Plugin-Variablen-Bezeichnungen (z.B. firstname) müssen voneinander "unabhängig" definiert werden (-> Verwendung im Newsletter). Schlechtes Beispiel: Definition eines Plugins "mail" und eines Plugins "mail_privat". Wird nun der Wert für "mail" im Newsletter ersetzt, ersetzt dies neben "MAIL_MAIL" auch "MAIL_MAIL_PRIVAT" (jedoch nur den ersten Teil).
Wichtig:
Mitgliederlisten und ähnliches sollten ggf. über Frontend User-Plugins realisiert werden, nicht unbedingt über Empfänger-Plugins, da die Daten bei jedem Newsletter-Versand mitgeladen werden (wenn die entsprechende Funktion aktiviert ist, siehe folgender Link).
Installation:
Einfach Datei entpacken und nach contenido/plugins hochladen (inklusive Verzeichnis recipients).
Enthaltene Plugins:
- Adresse (Zusatz, Straße, PLZ, Ort, Land)
- Vorname
- Nachname
- Homepage
Verzeichnisse von Plugins, die nicht benötigt werden, können einfach gelöscht bzw. brauchen nicht hochgeladen werden.
Verwendung im Newsletter:
Jede Information, die gespeichert wird, kann beim Versand des Newsletters verwendet werden.
Beispiel: Information "Vorname" (intern: "firstname") -> MAIL_FIRSTNAME.
Damit dies funktioniert, ist das aktuelle Backend-Update einzuspielen:
http://www.contenido.org/forum/viewtopic.php?t=9932
Es wird empfohlen, vor dem Update die vorhandenen Dateien, die durch das Update ersetzt werden, zu sichern.
Gruß
HerrB
Re: Plugin: Empfänger/Recipients
Verfasst: Sa 20. Mai 2006, 09:05
von emergence
HerrB hat geschrieben:- Plugin-Variablen-Bezeichnungen (z.B. firstname) müssen voneinander "unabhängig" definiert werden (-> Verwendung im Newsletter). Schlechtes Beispiel: Definition eines Plugins "mail" und eines Plugins "mail_privat". Wird nun der Wert für "mail" im Newsletter ersetzt, ersetzt dies neben "MAIL_MAIL" auch "MAIL_MAIL_PRIVAT" (jedoch nur den ersten Teil).
nur ne kleine anmerkung wie sich das beheben ließe
ich schätze mal das die ersetzung ja mittels str_replace oder str_ireplace vorgenommen wird oder ?
man müsste nur den array der da generiert wird (falls du das so einsetzt)
absteigend sortieren... (den replacement sring natürlich ebenso)
aussehen würde der array anstelle von
Array("MAIL_MAIL", "MAIL_MAIL_PRIVAT")
dann so
Array("MAIL_MAIL_PRIVAT", "MAIL_MAIL")
und das sollte das problemchen beheben...
Verfasst: So 21. Mai 2006, 16:27
von HerrB
Gute Idee, danke. Muss ich das Plugin-Array sortieren... nehme ich bei der nächsten Überarbeitung rein.
Gruß
HerrB
Verfasst: Do 20. Jul 2006, 09:19
von Martin S.
Kurze Anmerkung, wenn ich das richtig gesehen habe.
Wenn man einen Abbonenten von Hand aus der Liste löscht, dann wird der Eintrag aus der con_news_rcp richtig gelöscht, aber die Zusatzdaten in der con_properties wie firstname und lastname usw. bleiben noch gespeichert.
Verfasst: Do 20. Jul 2006, 10:54
von HerrB
Dieser Fehler ist in den kommenden Contenido-Versionen bereits behoben (siehe Bugs V4.6).
Gruß
HerrB
Verfasst: Mi 25. Okt 2006, 14:18
von Nihilius
super ding, genau was ich brauche
funktioniert bei ir aber noch nicht so recht:
im backend habe ich die zusätzlichen felder,
versuche ich den datensatz über das newsletterformular-template zu füllen:
z.B. mit:
<textarea name="lastname" id="lastname" ></textarea>
landet der Eintrag aber nicht in der Datenbank
dasselbe mit "recipients_lastname" habe ich auch probiert,
habe auch schon das news_future_464_0.5 reingespielt,
mach ich noch nen grundlegenden fehler?
gruß
Nihilius
Verfasst: Do 26. Okt 2006, 22:46
von HerrB
Du musst natürlich im Newsletter-Handler-Modul noch den notwendigen Code ergänzen, damit die Information auch gespeichert wird...
Ich habe es nicht so genau im Kopf, sieht ungefähr so aus:
Code: Alles auswählen
$recipient->setProperty("<typ>", "<name>", "<value>");
Das muss in dem Bereich eingetragen werden, der den Empfänger anlegt (d.h. nachdem er mit $recipient->create angelegt wurde). "<typ>" und "<name>" ergibt sich aus den Plugins (siehe in den jeweiligen Code), "<value>" kommt aus der Variable, e.g.:
Code: Alles auswählen
$recipient->setProperty("address", "lastname", $_REQUEST["lastname"]);
Nur ein Beispiel, da muss im Detail nix stimmen, siehe Plugins... und eine Wertprüfung ist auch eine super Idee...
Gruß
HerrB
Verfasst: Do 26. Okt 2006, 23:10
von Nihilius
korrekt, funzt
danke!
Verfasst: Mi 31. Okt 2007, 12:07
von funomat
Hallo HerrB, ich mal wieder
habe bei einer Installation 4.6.23mr_v0.3 das Plugin installiert. Kann auch schön Newsletter-Empfänger eintragen und im Backend läuft auch alles prima.
Beim versenden wird allerdings beim ersetzen von MAIL_FIRSTNAME und MAIL_LASTNAME immer der gleiche Name eingesetzt !!! MAIL_NAME wird problemlos ersetzt.
Habe schon versucht das Problem ausfindig zu machen, komme aber nicht drauf woran es liegen könnte. Kannst Du mir da weiter helfen?
Gruß,
funomat
Verfasst: Mi 31. Okt 2007, 23:05
von HerrB
Err. Versende mal einen Testnewsletter an Deine E-Mail-Adresse und gucke mal, was er dann einträgt. Will nicht ausschließen, dass da noch ein Bug schlummert...
Gruß
HerrB
Verfasst: Do 1. Nov 2007, 01:12
von funomat
Das steht in der Anrede, wenn ich die Mail als Testmail an mich schicke:
Code: Alles auswählen
:: formOfAddress: formOfAddress :: :: firstname: firstname :: :: lastname: lastname ::
Hilft das weiter?
Verfasst: Do 1. Nov 2007, 19:13
von HerrB
Dann tippe ich auf den Code der Plugins - bitte mal kontrollieren, ob da wirklich die richtigen Daten geladen werden.
Gruß
HerrB
Verfasst: Mo 5. Nov 2007, 09:07
von funomat
So sieht der Code für firstname aus:
Code: Alles auswählen
function recipients_firstname_getTitle () {
return i18n("Firstname", "recipients_firstname");
}
function recipients_firstname_display () {
global $recipient;
$firstname = new cHTMLTextbox("firstname", $recipient->getProperty("contact", "firstname"));
return $firstname->render();
}
function recipients_firstname_wantedVariables () {
return (array("firstname"));
}
function recipients_firstname_canonicalVariables () {
return array("firstname" => i18n("Firstname", "recipients_firstname"));
}
function recipients_firstname_getvalue ($field) {
global $recipient;
if ($field == "firstname") {
return $recipient->getProperty("contact", "firstname");
}
}
function recipients_firstname_store ($variables) {
global $recipient;
if (!array_key_exists("firstname",$variables)) {
return false;
} else {
$recipient->setProperty("contact", "firstname", $variables["firstname"]);
return true;
}
}
Für alle anderen sieht es genau so aus!
Gruß,
funomat
Verfasst: Mo 5. Nov 2007, 20:16
von HerrB
Und wie sieht der Code für das Lastname-Plugin aus?
Gruß
HerrB
Verfasst: Di 6. Nov 2007, 08:24
von funomat
lastname:
Code: Alles auswählen
function recipients_lastname_getTitle () {
return i18n("Lastname", "recipients_lastname");
}
function recipients_lastname_display () {
global $recipient;
$lastname = new cHTMLTextbox("lastname", $recipient->getProperty("contact", "lastname"));
return $lastname->render();
}
function recipients_lastname_wantedVariables () {
return (array("lastname"));
}
function recipients_lastname_canonicalVariables () {
return array("lastname" => i18n("Lastname", "recipients_lastname"));
}
function recipients_lastname_getvalue ($field) {
global $recipient;
if ($field == "lastname") {
return $recipient->getProperty("contact", "lastname");
}
}
function recipients_lastname_store ($variables) {
global $recipient;
if (!array_key_exists("lastname",$variables)) {
return false;
} else {
$recipient->setProperty("contact", "lastname", $variables["lastname"]);
return true;
}
}
formOfAdress:
Code: Alles auswählen
function recipients_formOfAddress_getTitle () {
return i18n("Form of address", "recipients_formOfAddress");
}
function recipients_formOfAddress_display () {
global $recipient;
$formOfAddress = new cHTMLTextbox("formOfAddress", $recipient->getProperty("contact", "formOfAddress"));
return $formOfAddress->render();
}
function recipients_formOfAddress_wantedVariables () {
return (array("formOfAddress"));
}
function recipients_formOfAddress_canonicalVariables () {
return array("formOfAddress" => i18n("Form of address", "recipients_formOfAddress"));
}
function recipients_formOfAddress_getvalue ($field) {
global $recipient;
if ($field == "formOfAddress") {
return $recipient->getProperty("contact", "formOfAddress");
}
}
function recipients_formOfAddress_store ($variables) {
global $recipient;
if (!array_key_exists("formOfAddress",$variables)) {
return false;
} else {
$recipient->setProperty("contact", "formOfAddress", $variables["formOfAddress"]);
return true;
}
}