Ответ 1
Редакция:
После публикации этого ответа 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, поэтому вам придется обрабатывать его правильно.
Вот как выглядит мой файл index.html
:
<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>
API MailChimp версии 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 и замените соответствующий файл MCAPI.class.php
выше.
http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip
2) Следуйте указаниям в файле Readme, добавив свой ключ API и идентификатор списка в файл store-address.php
в соответствующих местах.
3) Вы также можете захотеть собрать имя пользователя и/или другую информацию. Вы должны добавить массив в файл store-address.php
, используя соответствующие переменные Merge.
Вот как выглядит мой файл 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 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.
Вот как выглядит мой файл index.html
:
<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>
Требуемые фрагменты...
-
index.html, построенный как выше, так и аналогичный. С jQuery внешний вид и опции бесконечны.
-
store-address.php файл, загруженный как часть примеров PHP на сайте Mailchimp и измененный с помощью API KEY и LIST ID. Вам нужно добавить другие дополнительные поля в массив.
-
Файл MCAPI.class.php, загруженный с сайта Mailchimp (версия 1.3 для PHP 5 или версия 1.2 для PHP 4). Поместите его в тот же каталог, что и ваш store-address.php, или вы должны обновить URL-адрес в store-address.php, чтобы он мог его найти.