Plugin: Empfänger/Recipients

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Plugin: Empfänger/Recipients

Beitrag von HerrB » Mo 8. Mai 2006, 23:50

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

emergence
Beiträge: 10606
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Plugin: Empfänger/Recipients

Beitrag von emergence » Sa 20. Mai 2006, 09:05

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...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 21. Mai 2006, 16:27

Gute Idee, danke. Muss ich das Plugin-Array sortieren... nehme ich bei der nächsten Überarbeitung rein.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Martin S.
Beiträge: 183
Registriert: Fr 14. Jan 2005, 10:46
Kontaktdaten:

Beitrag von Martin S. » Do 20. Jul 2006, 09:19

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.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 20. Jul 2006, 10:54

Dieser Fehler ist in den kommenden Contenido-Versionen bereits behoben (siehe Bugs V4.6).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Nihilius
Beiträge: 25
Registriert: Di 27. Sep 2005, 17:50
Kontaktdaten:

Beitrag von Nihilius » Mi 25. Okt 2006, 14:18

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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 26. Okt 2006, 22:46

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Nihilius
Beiträge: 25
Registriert: Di 27. Sep 2005, 17:50
Kontaktdaten:

Beitrag von Nihilius » Do 26. Okt 2006, 23:10

korrekt, funzt
danke!

funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Beitrag von funomat » Mi 31. Okt 2007, 12:07

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
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 31. Okt 2007, 23:05

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Beitrag von funomat » Do 1. Nov 2007, 01:12

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?
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 1. Nov 2007, 19:13

Dann tippe ich auf den Code der Plugins - bitte mal kontrollieren, ob da wirklich die richtigen Daten geladen werden.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Beitrag von funomat » Mo 5. Nov 2007, 09:07

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
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 5. Nov 2007, 20:16

Und wie sieht der Code für das Lastname-Plugin aus?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Beitrag von funomat » Di 6. Nov 2007, 08:24

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;
	}
}
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)

Gesperrt