Gibt es eine Möglichkeit nachzuhalten, welche E-Mail Adresse aus dem Verteiler des Newsletter-Versandes ausgetragen wurde?
Danke für die Hilfe
Gibt es eine Möglichkeit nachzuhalten, welche E-Mail Adresse aus dem Verteiler des Newsletter-Versandes ausgetragen wurde?
Danke für die Hilfe
Hallo,
mit der 2.8 sind 2 Hooks in TL implementiert worden:
activateRecipient
Der activateRecipient-Hook wird bei der Aktivierung eines neuen Newsletter-Abonnenten ausgeführt. Er übergibt die E-Mail-Adresse, die IDs der Empfänger und die IDs der Verteiler als Argument und erwartet keinen Rückgabewert. Hinzugefügt in TYPOlight 2.8.RC1.removeRecipientPHP-Code:
// config.php
$GLOBALS['TL_HOOKS']['activateRecipient'][] = array('MyClass', 'activateRecipient');
// MyClass.php
public function activateRecipient($strEmail, $arrRecipients, $arrChannels)
{
// Beliebiger Code
}
Der removeRecipient-Hook wird bei der Kündigung eines Newsletter-Abonnements (Unsubscribe) ausgeführt. Er übergibt die E-Mail-Adresse und die IDs der Verteiler als Argument und erwartet keinen Rückgabewert. Hinzugefügt in TYPOlight 2.8.RC1.Damit müsste man doch eine Extension erstellen können, die dem Admin ein E-Mail schickt, wenn eins der beiden Ereignisse eintritt.PHP-Code:
// config.php
$GLOBALS['TL_HOOKS']['removeRecipient'][] = array('MyClass', 'removeRecipient');
// MyClass.php
public function removeRecipient($strEmail, $arrChannels)
{
// Beliebiger Code
}
Ich kann ja leider überhaupt nicht programmieren...wäre es denn sehr aufwendig, so eine Extension zu erstellen?
Im Grunde müsste man doch nur mit dem Modul-Creator eine Extension erstellen, in dieser die Hooks einbinden, und dann in den Funktionen den E-Mailversand einbinden, so wie hier beschrieben:
https://community.contao.org/de/showthread.php?t=3049
Kriege ich das auch ohne Programmierkenntnisse hin? Ein Modul erstellen sollte ich noch packen, das ist ja auch in Leos Buch beschrieben.
Danke und Gruß
Mathias
“Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”― Terry Pratchett, The Truth
Hallo Mathias,
so aufwendig dürfte dein Vorhaben gar nicht sein. Vielleicht hilft dir dieses Tutorial weiter https://community.contao.org/de/showthread.php?t=5739, hier geht es zwar um ein anderes Thema, allerdings ist gut ersichtlich, wie ein Hook genutzt werden kann.
Gruß Janosch
Hallo Janosch,
Danke für den Link! Ich habe jetzt mal eine Extension erstellt, und so geht es!
Das habe ich gemacht:
- unter system/modules einen Ordner erstellt z_nl_subscribe_alert
- darin einen Ordner config mit einer .htaccess und einer config.php
Inhalt der config.php:
PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_HOOKS']['activateRecipient'][] = array('SubscribeAlert', 'activateRecipient');
?>
- dann eine Datei namens SubscribeAlert.php in den Ordner z_nl_subscribe_alert
Inhalt der SubscribeAlert.php:
Wenn jetzt ein neuer Abonnent seinen Newsletter abonniert, dann wird eine Mail an die bei sendTo eingetragene Adresse verschicktPHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class SubscribeAlert extends Newsletter
{
// SubscribeAlert.php
public function activateRecipient($strEmail, $arrRecipients, $arrChannels)
{
// wir instanziieren ein neues Objekt der Klasse Email
$objMailAlert = new Email();
$objMailAlert->from = 'admin@foobar.org';
$objMailAlert->fromName = 'Systemadministrator';
$objMailAlert->subject = 'neuer Newsletter-Abonnent';
$objMailAlert->text = 'Es hat sich ein neuer Newsletter-Abonnent eingetragen';
$objMailAlert->sendTo('empfaenger@mailadresse.de');
unset($objMailAlert);
}
}
?>
Danke und Gruß
Mathias
Geändert von mdoll (21.02.2010 um 20:03 Uhr) Grund: Korrektur - es geht!
“Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”― Terry Pratchett, The Truth
Um es dann noch komplett zu machen:
So wird eine E-Mail verschickt, wenn jemand sein Newsletter-Abo kündigt:
die config.php ergänzen um
Dann eine Datei UnsubscribeAlert.php mit folgenden Inhalt erstellen:PHP-Code:
$GLOBALS['TL_HOOKS']['removeRecipient'][] = array('UnsubscribeAlert', 'removeRecipient');
statt empfaenger@mailadresse.de natürlich die Mailadresse eintragen, an die die Mails geschickt werden sollen. Und auch die Adminadresse wie gewünscht ändern.PHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class UnsubscribeAlert extends Newsletter
{
// UnsubscribeAlert.php
public function removeRecipient($strEmail, $arrChannels)
{
// wir instanziieren ein neues Objekt der Klasse Email
$objMailAlert = new Email();
$objMailAlert->from = 'admin@foobar.org';
$objMailAlert->fromName = 'Systemadministrator';
$objMailAlert->subject = 'Newsletter gekuendigt';
$objMailAlert->text = 'Ein Abonnent hat seinen Newsletter gekuendigt. Mailadresse: ' . $strEmail;
$objMailAlert->sendTo('empfaenger@mailadresse.de');
unset($objMailAlert);
}
}
?>
Das lässt sich bestimmt noch verfeinern, z.B. könnte man auf die im Backend eingetragenen Adminmail zurückgreifen etc.
Gruß
Mathias
“Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”― Terry Pratchett, The Truth
Hallo,
ich finde die Idee super und würde es auch gerne einsetzen!
Nur wenn ich das Modul so wie beschrieben einsetze und auf den Server hochlade kommt sofort eine weiße Seite und ich kann nichts mehr einstellen. Sowohl im Backend wie auch im Frontend!
Ist es nicht für für 2.8.2 kompatibel?
Danke
Gruß
Matu
Eine weiße Seite bedeutet das ein Fehler aufgetreten ist.
Schalt doch mal in den Einstellungen "Fehler anzeigen" an und dann kannst du hier die Fehlermeldung posten. Somit können wir dir ev. helfen.
Ich habe den Punkt unter Einstellungen angeklickt, es kommt keine Fehlermeldung!
Sobald ich den Ordner z_nl_subscribe_alert in den Ordner Module hochlade funktioniert nichts mehr (nur komplett weiße Seite)!
Hat es etwas mit der .htaccess-Datei zu tun? Ich habe diese auch einmal rausgelassen, Fehler ist trotzdem da. Was muss denn für ein Inhalt in die htaccess-Datei?
Danke
Geändert von matuweb (11.05.2010 um 10:38 Uhr)
Was sagen denn die log dateien (die des Servers)
puh, da sind ja meterweise daten drin!
wonach soll ich denn suchen?
Nach PHP Fehlern
was soll ich denn suchen?
bei allen protokollierungen steht immer get der post vor mit ip, pfad etc!
Du schaust dir die Request-Datei an, in der alle Zugriffe protokolliert werden. Du solltest aber die Fehler-Datei ansehen
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Sorry, kenn mich da net aus !
Ich habe leider keine andere Möglichkeit, Dateien anzusehen. Die Webseite liegt bei 1Blu.de.
Was kann ich machen?
Würde dieses Tool sehr gerne einsetzen und wäre für mich von großem Vorteil!
Am einfachsten schau mal in die system/logs/error.log, vielleicht steht da was. Ansonsten bleibt dir nicht viel mehr übrig, als selber zu debuggen. Am einfachsten mal eine Datei nach der anderen löschen, bis die weisse Seite verschwindet.
terminal42 gmbh
Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle
Hallo,
Deine config.php sieht so aus?
in der .htaccess steht einfachPHP-Code:
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_HOOKS']['activateRecipient'][] = array('SubscribeAlert', 'activateRecipient');
$GLOBALS['TL_HOOKS']['removeRecipient'][] = array('UnsubscribeAlert', 'removeRecipient');
?>
Könnte es evtl. noch an den Zugriffsrechten für den Ordner liegen?Code:order deny,allow deny from all
Gruß
Mathias
“Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”― Terry Pratchett, The Truth
Also ich bekomme folgende Fehlermeldung (muss an der config.php liegen, wenn ich diese rausnehme ist der Fehler weg):
Warning: Cannot modify header information - headers already sent by (output started at /hp/ax/ab/og/www/system/modules/z_nl_subscribe_alert/config/config.php:4) in /hp/ax/ab/og/www/system/libraries/Template.php on line 174
#0 /hp/ax/ab/og/www/system/libraries/Template.php(174): __error(2, 'Cannot modify h...', '/hp/ax/ab/og/ww...', 174, Array)
#1 /hp/ax/ab/og/www/system/modules/frontend/FrontendTemplate.php(203): Template->output('Content-Type: t...')
#2 /hp/ax/ab/og/www/system/modules/frontend/PageRegular.php(133): FrontendTemplate->output()
#3 /hp/ax/ab/og/www/index.php(188): PageRegular->generate()
#4 /hp/ax/ab/og/www/index.php(311): Index->run(Object(DB_Mysql_Result))
#5 {main}
Hast Du die betreffende Datei geöffnet und dann womöglich nicht mehr richtig im UTF-8 Format abgespeichert?
ich habe die Datei config.php in Dreamweaver CS4 erstellt und abgespeichert!
Danke für die Antworten!
Ich werde es erst am Montag testen können und dann berichten.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen