ВИДАЛЕНО:
З моменту розміщення цієї відповіді MailChimp випустив версії 2 та 3 їх API. Версія 3 буде єдиною підтримуваною версією, починаючи з 2017 року. Як тільки у мене буде можливість протестувати її, я оновлю цю відповідь для API версії 3.
API MailChimp v3.0
Відповідно до повідомлення вгорі на цій сторінці , усі попередні версії API не будуть підтримуватися після 2016 року.
Моє рішення використовує PHP у фоновому режимі для обробки API та jQuery для полегшення роботи Ajax.
1) Завантажте обгортку PHP, яка підтримує API v3.0. На момент написання цієї статті в останніх документах MailChimp немає жодного офіційного списку, що підтримує v3.0, але кілька перераховано на GitHub, тому я вибрав цей .
2) Створіть наступний файл PHP, store-address.php
, використовуючи власний ключ API та ідентифікатор списку, а потім помістіть його в ту ж директорію, що і обгортка з першого кроку. Не забудьте дотримуватися документації до вашої обгортки, але всі вони здаються досить схожими на це.
<?php
include('MailChimp.php');
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);
$result = $mc->post('/lists/'.$list_id.'/members', array(
'email_address' => $_POST['email'],
'merge_fields' => $merge_vars,
'status' => 'pending'
)
);
return json_encode($result);
}
if ($_POST['ajax']) {
echo storeAddress();
} 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',
type: 'POST',
data: $('#signup').serialize() + '&ajax=true',
success: function(msg) {
var message = $.parseJSON(msg),
result = '';
if (message.status === 'pending') {
result = 'Success! Please click the confirmation link that will be emailed to you shortly.';
} else {
result = 'Error: ' + message.detail;
}
$('#message').html(result);
}
});
return false;
});
});
</script>
API MailChimp версії 1:
( оригінальна відповідь )
Потрудившись якийсь час, я знайшов веб-сайт на прикладі PHP із jQuery. З цього я зміг створити просту HTML-сторінку з jQuery, що містить основну форму реєстрації. Файли PHP "приховані" у фоновому режимі, де користувач їх ніколи не бачить, але jQuery все ще може отримати доступ і використовувати.
1) Завантажте приклад PHP 5 jQuery тут ... ( РЕДАКТУВАТИ : посилання мертві. Однак єдиною важливою частиною є офіційна обгортка 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
файлу за допомогою відповідних змінних об’єднання.
Ось як store-address.php
виглядає мій файл, де я також збираю ім’я, прізвище та тип електронної пошти:
<?php
function storeAddress() {
require_once('MCAPI.class.php');
$api = new MCAPI('123456789-us2');
$merge_vars = Array(
'EMAIL' => $_GET['email'],
'FNAME' => $_GET['fname'],
'LNAME' => $_GET['lname']
);
$list_id = "123456a";
if ($api->listSubscribe($list_id, $_GET['email'], $merge_vars , $_GET['emailtype'])) {
return 'Success! Check your inbox or spam folder for a message containing a confirmation link.';
} else {
return '<b>Error:</b> ' . $api->errorMessage;
}
}
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',
data: $('#signup').serialize() + '&ajax=true',
success: function(msg) {
$('#message').html(msg);
}
});
return false;
});
});
</script>
Потрібні штуки ...
index.html, побудований як вище або подібний. З jQuery зовнішній вигляд та можливості безмежні.
файл store-address.php, завантажений як частина прикладів PHP на сайті Mailchimp і змінений за допомогою вашого КЛЮЧА API та ІДЕНТИФІКАЦІЇ . Вам потрібно додати до масиву інші свої необов’язкові поля.
Файл MCAPI.class.php, завантажений з сайту Mailchimp (версія 1.3 для PHP 5 або версія 1.2 для PHP 4). Помістіть його в той самий каталог, що і ваш store-address.php, або ви повинні оновити шлях URL-адреси в store-address.php, щоб він міг його знайти.