6h später... und ich hab nix erreicht. Hab echt die ganze Nacht rumprobiert aus verzweiflung aber es bringt nix (
6h später... und ich hab nix erreicht. Hab echt die ganze Nacht rumprobiert aus verzweiflung aber es bringt nix (
Hallo,
ich habe versucht, das Ganze mit Contao 3.x umzusetzen - ohne Erfolg. Das Formular funktioniert ohne die Erweiterung problemlos.
Ich bin nach der Anleitung in diesem Thread #10 und eingefügtem request Token gemäß #24 vorgegangen.
Im Anhang ist eine ZIP-Datei die meine PHP-Dateien und die error.log enthält.
Ich kenne mich mit PHP nur wenig aus und komme nicht weiter.
Gibt es für Contao 3.x schon eine Lösung?
Danke für die Hilfe.
Schmidty
@Schmidty
hast du unter C3 mal den Autoload-Creator angeworfen?
Hallo Zonky,
Danke für den Hinweis. Den Autoload-Creator habe ich ebenfalls versucht - ohne Erfolg.
Sobald ich das Formular versende erscheint nur eine weiße Seite und der Zugriff übers Backend ist ebenfalls nicht mehr möglich.
Die einzige Möglichkeit das ganze Rückgängig zu machen, ist den Ordner "newslettercheckbox" mit einer ".skip"-Datei zu deaktivieren. Dann läuft alles wieder wie gewohnt.
Viele Grüße
Schmidty
... und wenn Du die Option "Fehlermeldungen ausgeben" aktivierst, kommen keine Ausgaben statt weisse Seite?
Hat das zufällig schon jemand hinbekommen?
Also das registrieren einschl. Double Opt in über ein normales Formular?
Stehe hier jetzt ebenfalls vor dem Invalid Request Token Problem und komme da ehrlich gesagt nicht mehr weiter.
Danke!
Contao ist schon was Feines...
Hy, cUrl vergibt eine neue Session ID, daher muss die Aktuelle Session ID via Cookie übergeben werden...
So Funktioniert es mit Contao 3.1...
Ihr müsst also folgendes einfügen:Meine Newslettercheckbox.php sieht daher so aus:PHP-Code:
curl_setopt($ch,CURLOPT_COOKIE,"PHPSESSID=".session_id()."; path=/");
Ein Timeout wurde eingegeben, da bei mir der Script sonst ewig läuft und erst durch das PHP Timout mit einem 500er Fehler beendet wird.PHP-Code:
<?php
class Newslettercheckbox extends Frontend
{
public function processFormData($arrPost, $arrForm, $arrFiles)
{
$subscribe = false;
if($arrForm['id'] == 1) {
if($arrPost['newsletter_accept'] == "yes") {
$subscribe = true;
$PostData = array('REQUEST_TOKEN'=>REQUEST_TOKEN,'FORM_SUBMIT'=>'tl_subscribe','email'=>$arrPost['personalData_EMail'],'channels'=>array('1'));
$PageReferer = "http://".$_SERVER['HTTP_HOST']."/aktuelle-seite.html";
}
}
if($subscribe) {
$Post = http_build_query($PostData);
$ch = curl_init($PageReferer);
curl_setopt($ch,CURLOPT_REFERER,$PageReferer);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$Post);
curl_setopt($ch,CURLOPT_MUTE,true);
curl_setopt($ch,CURLOPT_COOKIE,"PHPSESSID=".session_id()."; path=/");
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($ch,CURLOPT_TIMEOUT,4);
$data = curl_exec($ch);
curl_close($ch);
}
}
}
?>
LG Erich
--
colorMedia e.U.
http://www.colormedia.at
Geniale, da sehr flexible Idee.
Bei mir (2.11.12) laufen beide Varianten (für 2.x und 3.x) mit deaktiviertem Token fast sauber, "nur" dass die E-Mail nicht in den Newsletterverteiler eingetragen und keine Bestätigungsmail gesendet wird.
Jemand eine Idee? Die Weiterleitungsseite kommt und die Formulardaten werden intern auch korrekt übermittelt.
Hallo,
@colormedia.at könntest du uns bitte evtl. die Zip mit allen Dateien dafür bereitstellen?
Ein Modul dafür gibt es dafür aber noch nicht oder? Habe zumindest noch nichts für Contao 3.x gefunden.
ioCron - Web & Mobile Development, Webdesign - Unternehmen in Passau
ioCron Twitter - Folgen und auf dem neuesten Stand bleiben
Ich würde gerne das ganze aktivieren, ohne den Nutzer noch zum Abo-Formular zu leiten. Das heißt, ich möchte, dass die Mailadresse in das Datenbankfeld eingetragen wird und keine weitere Weiterleitung stattfindet. Mein Formular wird nämlich schon zu einer anderen Seite weitergeleitet. Hat jemand eine Idee, wie es geht? Danke. Liebe Grüße,
Jan
Ich finde die Lösung mit dem curl Aufruf auch nicht so richtig toll. Kann man das nicht direkt in die Tabelle tl_newsletter_recipients eintragen? Gibt es da tatsächlich noch keine Extension für? Ist doch eigentlich total das Standard ding, Newsletterbox im Kontaktformular!?
schließe mich an - das ist wirklich nur eine Not(!)-Lösung...
... es sollte doch möglich sein, die "Newsletter-Klasse" aufzurufen - ggf. bietet das notification center mehr Möglichkeiten
https://contao.org/de/extension-list...center.en.html
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Alles muß man selber machen... ;-)
Hier mein Lösungsansatz für 3.3.X:
Kern ist die system/modules/newslettercheckbox/classes/Newslettercheckbox.php
Wie ich da noch so etwas wie Token und Ip reinbekomme, weiß ich nicht, aber so wird die email Adresse gleich eingetragen, ohne "Umweg" über den Curl Request.PHP-Code:
<?php
namespace Contao;
class Newslettercheckbox extends Frontend
{
public function processFormData($arrPost, $arrForm, $arrFiles)
{
// print_r($arrPost);
//Kontaktformular -> Checkbox für Newsletter aktiviert?
//********************************************************************
if($arrForm['id'] == 3) {
if($arrPost['newsletter'] == "Ja") {
$time = time();
$arrData = array
(
'pid' => 1,
'tstamp' => $time,
'email' => $arrPost['email'],
'active' => 1
);
$this->Database->prepare('INSERT INTO tl_newsletter_recipients %s')->set($arrData)->execute();
}
}
}
}
?>
Es braucht auch noch eine system/modules/newslettercheckbox/config/autoload.php
PHP-Code:
<?php
ClassLoader::addClasses(array
(
// Classes
'Contao\Newslettercheckbox' => 'system/modules/newslettercheckbox/classes/Newslettercheckbox.php',
));
?>
siehe \system\core\modules\ModuleRegistration.php => createNewUser
leider ist die Funktion protected und damit wird man nicht so einfach darauf zugreifen können - wahrscheinlich wäre der sauberste Weg, ein neues Form-Element zu erstellen, in dem man auch die Einstellmöglichkeiten wie bei dem FE-News-Modul hat und das Element "irgendwo" im Formular einbauen kann...
... das hätte den Vorteil, das man das Element z.B. auch in Isotope verwenden kann, welches in der Lage ist, "Formular-Partials" im Check-out einzubinden...
noch eine Möglichkeit: per Hook eine separate E-Mail mit den Anmeldedaten erzeugen und an Mailchimp senden - da gibt es m.E. die Möglichkeit per E-Mail User anzumelden
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Der Code für Newslettercheckbox.php oben verursacht in Verbindung mit dem efg einen Fehler. Also SO nicht zu verwenden...
ich habe inzwischen eine "Bridge", mit dem ich ein neues Formularelement habe (gleiche Einstellungsmöglichkeiten wie beim FE-Modul) und die Versendung entweder separat oder per Notification-Center läuft...
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Hi Zonky,
Darf ich fragen, wie du das an der Stelle gelöst hast? Weil ich bekomme meine Ansätze unter Contao 3.3.6 nicht zum laufen.ich habe inzwischen eine "Bridge", mit dem ich ein neues Formularelement habe (gleiche Einstellungsmöglichkeiten wie beim FE-Modul) und die Versendung entweder separat
Viele Grüße
Micha
Für Contao eine "Formular-Newsletter-Bridge" ist ne eigenständige Erweiterung - closed source...
bei Interesse bitte PN senden
Geändert von zonky (21.05.2018 um 09:24 Uhr)
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Hallo liebe Contao Freunde
Ich habe noch eine ältere Cotnao installation (2.11.16) und bin deshalb mit der Anleitung von buchbergertom super klar gekommen.
Nun will der Kunde jedoch zusätzliche Felder wie Anrede, Name, Vorname bei den Newsletter eintragungen gespeichert haben.
Deshalb wollte ich auf den Avisota Newsletter zurückgreifen. Nun funktioniert aber das mit dem automatischen Eintragen nicht mehr..
Dazu habe ich folgenden Ansatz von Gregor erfolglos probiert..
Hat jemand hier eine Lösung oder einen Lösungsansatz für mich?
Vielen Dank und freundliche Grüsse
Sepher
Hi,
wir haben dazu ein Modul gebaut:
https://github.com/iMi-digital/imi_newsletter_form
Grüße,
Alexander
Hey,
ich versuche das Modul gerade ohne den Composer zu installieren - gelingt aber leider nicht....
ich stecke den Inhalt der Zip Datei von github in einen Ordner unter modules namens " imi/imi_newsletter_form" und schieb da den kompletten Content rein....
ist aber wohl leider falsch...?'!
Edit: Habs endlich hinbekommen - manchmal will contao das update über die Erweiterungsverwaltung nicht machen - dann gehts dafür über die installationsroutine.... Modul läuft sauber mit 3.5.15
Gruss Gassi
Geändert von Gassi (23.09.2016 um 13:23 Uhr)
Habe die Erweiterung erfolgreich unter 3.5.28 am laufen.
Leider wird mir keine Checkbox im Frontend angezeigt, wo man auswählen kann ob man den Newsletter abonnieren möchte oder eben nicht.
Man wird automatisch auf die Seite weitergeleitet, welche bestätigt dass man den Newsletter abonniert hat und noch per E-Mail bestätigen muss.
Was aber wenn jemand den NL nicht haben möchte - das Formular sollte dies nicht erzwingen. Gibt es dazu eine Einstellungsmöglichkeit?
Edit: Sehe gerade auf Github dass dies wohl nicht implementiert wurde.
Ein user spricht hier von einem workaround - doch ich frage mich wie das gehen soll.
Man müsste abfragen ob Checkbox ja/nein und auf die entsprechende Seite weiterleiten bzw. das Bestätigungs-E-Mail auslösen oder eben nicht.
Geändert von gm-team (12.09.2017 um 09:45 Uhr)
Servus,
ich versuche, ausgehend vom Modul von s3lf in ein bestehendes Anmelde-Formular für ein Event (Erweiterung calendar-extended) eine "Newsletter abonnieren"-Checkbox einzubauen.
Bis zum Hook processFormData und der if(Checkbox-angeklickt)-Abfrage funktioniert alles einwandfrei. Auch das Newsletter Abonnieren selber klappt. Allerdings wird dann die Eventanmeldung nicht registriert. Das heißt, der Hook bricht die Eventanmeldung ab, obwohl processFormData doch erst NACH der Verarbeitung des Anmeldeformulars eingreifen sollte, oder?
Im Prinzip sieht meine Class so aus, wie bei s3lf: https://github.com/iMi-digital/imi_n...rmObserver.php
Hab ich einen Denk- / Verständnisfehler drin?
Gibt’s mittlerweile was einfacheres, was ich übersehen habe? (Contao 3.5.31)
zur Ergänzung noch mein tatsächlicher Code (bzw. der von s3lfs Modul angepasste):
PHP-Code:
<?php
class Newsletterabo extends \Backend
{
protected function getModule($intId)
{
$objRow = \ModuleModel::findByPk($intId);
if ($objRow === null)
{
return null;
}
// Check the visibility (see #6311)
if (!\Controller::isVisibleElement($objRow))
{
return null;
}
$strClass = \Module::findClass($objRow->type);
if (!class_exists($strClass))
{
static::log('Module class "'.$strClass.'" (module "'.$objRow->type.'") does not exist', __METHOD__, TL_ERROR);
return null;
}
$objRow->typePrefix = 'mod_';
return new $strClass($objRow, 'main');
}
public function newsletterabonnieren($arrPost, $arrForm, $arrFiles)
{
if ($arrForm['id'] == 2 && $arrPost[newsletter]=='abonnieren') {
//Newsletter-abonnieren-Funktion
/** @var $objModule \Contao\ModuleSubscribe */
$objModule = $this->getModule(25); // Modul 25 ist das Newsletter-abonnieren-Modul
// always subscribe all channels
$arrChannels = unserialize($objModule->nl_channels);
\Input::setPost('channels', $arrChannels);
// simulate newsletter form post
\Input::setPost('FORM_SUBMIT', 'tl_subscribe');
$objModule->generate();
\Input::setPost('FORM_SUBMIT', null);
// abonniert Newsletter, fährt aber dann nicht mit Eventanmeldung fort …
}
}
}
Geändert von moritz123 (21.11.2017 um 12:39 Uhr)
Ich benutze jetzt den Hook sendNotificationMessage vom Notification Center. Dadurch werden beide Anfragen (Eventanmeldung und Newsletterabo) im System registriert. Auch die Double-Opt-In-Mail vom Newslettermodul geht raus. Was jetzt noch fehlt ist der Versand der Eventbestätigungsmail …
config.php
Newsletterabo.phpPHP-Code:
$GLOBALS['TL_HOOKS']['sendNotificationMessage'][] = array('Newsletterabo', 'newsletterabonnieren');
Edit: Das return true am Schluss hat gefehlt. Jetzt läufts!PHP-Code:
<?php
class Newsletterabo extends \Backend
{
protected function getModule($intId)
{
// gekürzt. Die Funktion gibt das Newsletter-Abonnieren-Modul zurück
}
public function newsletterabonnieren($objMessage, $arrTokens, $language, $objGatewayModel)
{
if ($arrTokens['formconfig_id'] == 2 && $arrTokens['form_newsletter']=='abonnieren') {
// Bestätigungsmail Kursanmeldung
$arrTokens['form_newsletter']=''; // dass er nicht in Dauerschleife hängen bleibt
$objMessage->send($arrTokens); // Sollte theoretisch die Anmeldebestätigung versenden. Macht es aber nicht.
//Newsletter-abonnieren-Funktion
// gekürzt. Das Newsletterabo wird generiert (siehe letzter Beitrag)
}
return true; // <= das hat gefehlt
}
}
Geändert von moritz123 (22.11.2017 um 13:24 Uhr)
Hallo,
wie könnte ich die Extension "imi_newsletter_form" in Contao 4.4 verwenden?
Fragt
dtptiger
Erweiterung für C4 mit den Einstellungen wie beim "original" Modul
https://extensions.contao.org/?p=e-s...sletter-bundle
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen