Ich bin neu bei MailChimp und brauche Hilfe.
Mit ihrem einfachen Newsletter-Anmeldeformular ... binden Sie einfach vorgefertigten HTML-Code in Ihre Seite ein. Das Problem dabei ist jedoch, dass durch Klicken auf Senden Weiterleitungen zu einer MailChimp-Seite weitergeleitet werden. ( Ich möchte nicht zu MailChimp umleiten, ich möchte, dass der Benutzer nach dem Klicken auf "Senden" auf seiner eigenen Website bleibt. )
Sie bieten eine API und viel Dokumentation, aber kaum nützliche Beispiele. Die API soll mir eine vollständige Integration mit meiner Site oder Anwendung ermöglichen. Es scheint, dass ich, wenn ich etwas in ihren Dokumenten lese, das auf mich zutrifft, auf den Link klicke, um weitere Informationen zu erhalten, und mich dann im Kreis bewege. Sie sagen dir, wie es geht, aber sie "zeigen" dir nicht, wie es geht.
Ich kann einen API-Schlüssel bekommen, sie haben jede Menge Dokumentation und eine ganze Reihe von Wrappern und Plugins ... PHP, Drupal, Wordpress, etc ...
Die Verwirrung hier in Bezug auf ihre vorgefertigten Lösungen ist, dass ich nur eine normale statische HTML-Seite habe, es ist nicht Wordpress, PHP oder Drupal ... also weiß ich einfach nicht, wo ich anfangen soll ... ich weiß nicht einmal wenn ich verwenden soll POST
oder GET
.
Ich bin kein Neuling in APIs ... Ich kann die Google Maps-API sehr gut dazu bringen, alles zu tun, was ich will. Google bietet jedoch zusätzlich zu der detaillierten Dokumentation, wie ich sie gelernt habe, Beispiele aus der Praxis. Ich möchte es nur in Aktion sehen, bevor ich die Feinheiten der API erfassen kann.
Ohne solide Beispiele oder Tutorials in der Online-Dokumentation frage ich mich, wie das einfachste HTML-Anmeldeformular mithilfe der API erstellt werden kann.
quelle
Antworten:
EDITIERT:
Seit dem Posten dieser Antwort hat MailChimp Version 2 & 3 seiner API veröffentlicht. Version 3 wird ab 2017 die einzige unterstützte Version sein. Sobald ich die Möglichkeit habe, sie zu testen, werde ich diese Antwort für API-Version 3 aktualisieren.MailChimp API v3.0
Gemäß der Benachrichtigung oben auf dieser Seite werden alle früheren Versionen der API nach 2016 nicht mehr unterstützt.
Meine Lösung verwendet PHP im Hintergrund für die Handhabung der API und jQuery zur Erleichterung des Ajax.
1) Laden Sie einen PHP-Wrapper herunter, der API v3.0 unterstützt. Zum jetzigen Zeitpunkt ist in den neuesten MailChimp-Dokumenten, die v3.0 unterstützen, nichts offizielles aufgeführt, aber einige sind auf GitHub aufgeführt, daher habe ich dieses ausgewählt .
2) Erstellen Sie die folgende PHP-Datei
store-address.php
mit Ihrem eigenen API-Schlüssel und Ihrer Listen-ID und legen Sie sie ab Schritt 1 im selben Verzeichnis wie den Wrapper ab. Denken Sie daran, die Dokumentation für Ihren Wrapper zu befolgen, aber alle scheinen dem ziemlich ähnlich zu sein.<?php // for MailChimp API v3.0 include('MailChimp.php'); // path to API wrapper downloaded from GitHub use \DrewM\MailChimp\MailChimp; function storeAddress() { $key = "xxxxxxxxxxxxxxx-us1"; $list_id = "xxxxxx"; $merge_vars = array( 'FNAME' => $_POST['fname'], 'LNAME' => $_POST['lname'] ); $mc = new MailChimp($key); // add the email to your list $result = $mc->post('/lists/'.$list_id.'/members', array( 'email_address' => $_POST['email'], 'merge_fields' => $merge_vars, 'status' => 'pending' // double opt-in // 'status' => 'subscribed' // single opt-in ) ); return json_encode($result); } // If being called via ajax, run the function, else fail if ($_POST['ajax']) { echo storeAddress(); // send the response back through Ajax } else { echo 'Method not allowed - please ensure JavaScript is enabled in this browser'; }
3) Erstellen Sie Ihr HTML / CSS / JavaScript (jQuery) -Formular ( Es muss nicht auf einer PHP-Seite sein, und der Besucher wird nie sehen, dass PHP im Hintergrund verwendet wird. )
Die Antwort ist in JSON, daher müssen Sie richtig damit umgehen.
So
index.html
sieht meine Datei aus:<form id="signup" action="index.html" method="get"> First Name: <input type="text" name="fname" id="fname" /> Last Name: <input type="text" name="lname" id="lname" /> email Address (required): <input type="email" name="email" id="email" /> <input type="submit" id="SendButton" name="submit" value="Submit" /> </form> <div id="message"></div> <script src="jquery.min.js"></script> <script> $(document).ready(function() { $('#signup').submit(function() { $("#message").html("Adding your email address..."); $.ajax({ url: 'inc/store-address.php', // proper url to your "store-address.php" file type: 'POST', // <- IMPORTANT data: $('#signup').serialize() + '&ajax=true', success: function(msg) { var message = $.parseJSON(msg), result = ''; if (message.status === 'pending') { // success result = 'Success! Please click the confirmation link that will be emailed to you shortly.'; } else { // error result = 'Error: ' + message.detail; } $('#message').html(result); // display the message } }); return false; }); }); </script>
MailChimp API Version 1:
( ursprüngliche Antwort )
Nachdem ich eine Weile herumgefummelt hatte, fand ich eine Site, die das PHP-Beispiel mit jQuery verwendete. Daraus konnte ich mit jQuery eine einfache HTML-Seite erstellen, die das grundlegende Anmeldeformular enthielt. Die PHP-Dateien sind im Hintergrund "versteckt", wo der Benutzer sie noch nie sieht. Die jQuery kann weiterhin darauf zugreifen und sie verwenden.
1) Laden Sie hier das PHP 5 jQuery-Beispiel herunter ... ( BEARBEITEN : Links sind tot. Der einzige wichtige Teil ist jedoch der offizielle API-Wrapper für PHP, der HIER verfügbar ist .)
http://apidocs.mailchimp.com/downloads/mcapi-simple-subscribe-jquery.zipWenn Sie nur PHP 4 haben, laden Sie einfach Version 1.2 des MCAPI herunter und ersetzen Sie die entsprechende
MCAPI.class.php
Datei oben.http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip2) Befolgen Sie die Anweisungen in der Readme-Datei, indem Sie Ihren API-Schlüssel und Ihre Listen-ID hinzufügen
store-address.php
Datei an den richtigen Stellen .3) Möglicherweise möchten Sie auch den Namen Ihres Benutzers und / oder andere Informationen erfassen. Sie müssen der
store-address.php
Datei ein Array mit den entsprechenden Zusammenführungsvariablen hinzufügen .So
store-address.php
sieht meine Datei aus, in der ich auch den Vornamen, den Nachnamen und den E-Mail-Typ erfahre:<?php function storeAddress() { require_once('MCAPI.class.php'); // same directory as store-address.php // grab an API Key from http://admin.mailchimp.com/account/api/ $api = new MCAPI('123456789-us2'); $merge_vars = Array( 'EMAIL' => $_GET['email'], 'FNAME' => $_GET['fname'], 'LNAME' => $_GET['lname'] ); // grab your List's Unique Id by going to http://admin.mailchimp.com/lists/ // Click the "settings" link for the list - the Unique Id is at the bottom of that page. $list_id = "123456a"; if ($api->listSubscribe($list_id, $_GET['email'], $merge_vars , $_GET['emailtype'])) { // It worked! return 'Success! Check your inbox or spam folder for a message containing a confirmation link.'; } else { // An error ocurred, return error message return '<b>Error:</b> ' . $api->errorMessage; } } // If being called via ajax, autorun the function if($_GET['ajax']) { echo storeAddress(); }
4) Erstellen Sie Ihr HTML / CSS / jQuery-Formular. Es ist nicht erforderlich, sich auf einer PHP-Seite zu befinden.
So
index.html
sieht meine Datei aus:<form id="signup" action="index.html" method="get"> First Name: <input type="text" name="fname" id="fname" /> Last Name: <input type="text" name="lname" id="lname" /> email Address (required): <input type="email" name="email" id="email" /> HTML: <input type="radio" name="emailtype" value="html" checked="checked" /> Text: <input type="radio" name="emailtype" value="text" /> <input type="submit" id="SendButton" name="submit" value="Submit" /> </form> <div id="message"></div> <script src="jquery.min.js"></script> <script> $(document).ready(function() { $('#signup').submit(function() { $("#message").html("Adding your email address..."); $.ajax({ url: 'inc/store-address.php', // proper url to your "store-address.php" file data: $('#signup').serialize() + '&ajax=true', success: function(msg) { $('#message').html(msg); } }); return false; }); }); </script>
Erforderliche Stücke ...
index.html wie oben oder ähnlich aufgebaut. Mit jQuery sind das Erscheinungsbild und die Optionen endlos.
Die Datei store-address.php wurde als Teil von PHP-Beispielen auf der Mailchimp-Site heruntergeladen und mit Ihrem API-SCHLÜSSEL und Ihrer LIST-ID geändert . Sie müssen dem Array Ihre anderen optionalen Felder hinzufügen.
MCAPI.class.php Datei heruntergeladen von Mailchimp Website (Version 1.3 für PHP 5 oder Version 1.2 für PHP 4). Platzieren Sie es im selben Verzeichnis wie Ihre store-address.php, oder Sie müssen den URL-Pfad in store-address.php aktualisieren, damit es gefunden werden kann.
quelle
apt-get install php-curl
sollte es beheben (unter Ubuntu 16.04)Hier ist ein Beispiel für die Verwendung der Version 2.0 der Mailchimp-API zusammen mit mailchimp-api (eine minimale PHP-Abstraktionsklasse für den Umgang mit der Mailchimp-API).
<?php include('MailChimp.php'); $MailChimp = new MailChimp('API_KEY'); $result = $MailChimp->call('lists/subscribe', array( 'id' => 'LIST_ID', 'email' => array( 'email' => $_POST['email'] ), 'merge_vars' => array( 'MERGE2' => $_POST['name'] // MERGE name from list settings // there MERGE fields must be set if required in list settings ), 'double_optin' => false, 'update_existing' => true, 'replace_interests' => false )); if( $result === false ) { // response wasn't even json } else if( isset($result->status) && $result->status == 'error' ) { // Error info: $result->status, $result->code, $result->name, $result->error } ?>
Weitere Informationen darüber, was Sie mit dem API-Aufruf senden können, finden Sie in der MailChimp-API-Dokumentation .
quelle
Hier ist ein weiteres Beispiel für die Verwendung der Version 2.0 der Mailchimp-API mit dem offiziellen PHP-Wrapper .
Der Unterschied zwischen meinem Beispiel und anderen hier geschrieben ist , dass ich das bin mit abonnieren Methode der Mailchimp_Lists Klasse, zugänglich über Instanziierung der Mailchimp Klasse (
->lists
), anstatt die generische Aufruf Methode.$api_key = "MAILCHIMP_API_KEY"; $list_id = "MAILCHIMP_LIST_ID"; require('Mailchimp.php'); $Mailchimp = new Mailchimp($api_key); $subscriber = $Mailchimp->lists->subscribe($list_id, array('email' => $_POST['email'])); if ( ! empty($subscriber['leid'])) { // Success }
quelle
Mailchimp.php
?