Создайте базовую форму регистрации MailChimp с помощью своего API
Я новичок в MailChimp и нужна помощь.
С их основной формой регистрации бюллетень... вы просто вставляете некоторые предварительно упакованные HTML на свою страницу. Однако проблема с этим заключается в том, что нажатие на submit перенаправляет на страницу MailChimp. (Я не хочу перенаправлять на MailChimp, я хочу, чтобы пользователь оставался на своем веб-сайте после нажатия submit.)
они предоставляют API и много документации, но только около нуля полезных примеров. Предполагается, что API чтобы позволить мне сделать полную интеграцию с моим сайтом или приложением. Кажется, что когда я читаю что-то в своих документах, которые относятся ко мне, я нажимаю ссылку, чтобы получить дополнительную информацию, и я в конечном итоге хожу по кругу. Они говорят вам, как это сделать, но они не могут "показать" вам, как это сделать.
Я могу получить ключ API, у них есть тонны документации и целая куча оберток и плагинов... PHP, Drupal, Wordpress и др...
путаница здесь относительно их предварительно упакованных решения в том, что у меня просто есть обычная статическая HTML-страница, это не Wordpress, PHP или Drupal... так что я просто не знаю с чего начать ... Я даже не знаю, если я должен использовать POST
или GET
.
Я не новичок в API... Я очень хорошо справляюсь с тем, чтобы Google Maps API делал все, что я хочу. Тем не менее, Google предоставляет реальные рабочие примеры в дополнение к подробной документации, которая, как я узнал его. Я просто хочу увидеть его в действии, прежде чем я могу понять тонкости интерфейса.
без каких-либо твердых примеров или учебников в своей онлайн-документации я спрашиваю, как создать самую базовую форму регистрации HTML с помощью своего API.
3 ответа:
редактировать:
С момента публикации этого ответа MailChimp выпустила версию 2 и 3 своего API. Версия 3 будет единственной поддерживаемой версией, начиная с 2017 года. Как только у меня будет возможность проверить его, я обновлю этот ответ для API версии 3.
MailChimp API v3. 0
согласно уведомлению в верхней части этой страницы, все предыдущие версии API не будет поддержку после 2016 года.
мое решение использует PHP в фоновом режиме для обработки API и jQuery для облегчения Ajax.
1) Загрузите PHP-оболочку, которая поддерживает API v3.0. На момент написания этой статьи в последних документах MailChimp нет ничего официального, поддерживающего v3.0, но некоторые из них перечислены на GitHub, поэтому я выбрал этот.
2) создайте следующий PHP файл,
store-address.php
, используя свой собственный ключ API и идентификатор списка, а также затем поместите его в тот же каталог, что и обертку с первого шага. Не забудьте следовать документации для вашей оболочки, но все они кажутся довольно похожими на это.<?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) Создайте свою HTML / CSS / JavaScript (jQuery) форму (это не обязательно быть на странице PHP, и посетитель никогда не увидит, что PHP используется в фоновом режиме.)
ответ находится в JSON, так что вам придется обрабатывать его правильно.
вот что мое выглядит так:
<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:
(оригинальный ответ)
после некоторого поиска я нашел сайт, используя пример PHP с jQuery. Из этого я смог создать простую HTML-страницу с jQuery, содержащую основную форму регистрации. Файлы PHP "скрыты" в фоновом режиме, где пользователь никогда не видит их, но jQuery все еще может получить доступ & использовать.
1) Загрузите пример PHP 5 jQuery здесь... (EDIT: ссылки мертвы. Однако единственной важной частью является официальная оболочка API для PHP, которая доступна здесь.)
http://apidocs.mailchimp.com/downloads/mcapi-simple-subscribe-jquery.zipесли у вас есть только PHP 4, просто скачайте версию 1.2 MCAPI и замените соответствующий выше.
http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip2) следуйте инструкциям в файле Readme, добавив свой ключ API и идентификатор списка в
store-address.php
файл в нужных местах.3) Вы также можете собрать имя пользователя и/или другой информации. Вы должны добавить массив в
store-address.php
файл с использованием соответствующих переменных слияния.вот что мое
store-address.php
файл выглядит так, где я также собираю имя, фамилию и тип электронной почты:<?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) Создайте свою форму HTML / CSS / jQuery. Это не обязательно должно быть на странице PHP.
вот какой мой выглядит так:
<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>
требуются куски...
.HTML-код построенный как выше или подобный. С jQuery, внешний вид и параметры бесконечный.
store-адрес.php файл загружен как часть примеров PHP на сайте Mailchimp и изменен с помощью вашего API KEY и LIST ID. Вам нужно добавить другие необязательные поля в массив.
MCAPI.класс.php файл, загруженный с сайта Mailchimp (версия 1.3 для PHP 5 или версия 1.2 для PHP 4). Поместите его в тот же каталог, что и ваш store-адрес.php или вы должны обновить путь url в пределах store-адрес.php так что он может найти его.
пример использования версия 2.0 MailChimp API вместе с mailchimp-api (Минимальный класс абстракции php для работы с API Mailchimp).
<?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 } ?>
Узнайте больше о том, что вы можете отправить с вызовом API в в MailChimp API документация.
вот еще один пример использования версии 2.0 MailChimp API с помощью официальная PHP обертка.
разница между моим примером и другими опубликованными здесь заключается в том, что я использую подписаться метод Mailchimp_Lists класс, доступный через создание экземпляра класса Mailchimp (
->lists
), а не универсальный вызов метод.$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 }