私は自分のmailchimpをあまり使っていないので、事前に作成されたテンプレートを使用せずにフォームデータをmailchimpに簡単に送信できるかどうか疑問に思っています. また、mailchimp は何らかのコールバックを送信しますか? フォームを送信し、終了するとユーザーをダウンロードページにリダイレクトしたい。すべて ajax/jquery で動作するようになればさらに良いでしょう。
1 に答える
基本的に、ajax()
独自のカスタム HTML フォームで jQuery を使用して、MailChimp API と通信する PHP ファイルにアクセスします。MailChimp からの応答は Ajax 経由で元のフォームに返されるため、リダイレクトや更新はありません。ただし、リダイレクトしたい場合は、jQuery ajax 関数を変更するだけです。
PHP を使用していない場合でも、サーバーにインストールされている可能性があります。ユーザーが PHP ファイルを見ることはありません。それらはバックエンドで使用されているだけです。
しばらく手探りしたところ、jQuery を使用した PHP の例を使用しているサイトを見つけました。そこから、基本的なサインアップ フォームを含む単純な HTML ページを jQuery で作成することができました。PHP ファイルはバックグラウンドで「隠され」ており、ユーザーには表示されませんが、jQuery は引き続きアクセスして使用できます。
1) ここから PHP 5 jQuery の例をダウンロードしてください...
http://apidocs.mailchimp.com/downloads/mcapi-simple-subscribe-jquery.zip
PHP 4 しかない場合は、MCAPI のバージョン 1.2 をダウンロードして、MCAPI.class.php
上記の対応するファイルを置き換えてください。
http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip
2) Readme ファイルの指示に従って、API キーとリスト ID を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']) === true) {
// 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
ファイルは次のようになります。
<html>
<head>
<title>Welcome</title>
<style type="text/css" media="screen">
body { font-size: 16px; }
input { font-size: 16px; }
.textinput { width: 300px; height: 20px; }
#message { color: #8e2c30; font-size: 15px; font-weight: bold; padding: 10px; border: solid 1px #6d6e70; }
</style>
</head>
<body>
<div style="width:550px;">
<div style="text-align:right;">
<b>Sign Up for the Newsletter:</b><br />
<br />
<form id="signup" action="index.html" method="get">
First Name: <input type="text" name="fname" id="fname" class="textinput" value="" />
<br />
Last Name: <input type="text" name="lname" id="lname" class="textinput" value="" />
<br />
email Address (required): <input type="email" name="email" id="email" class="textinput" value="" />
<br />
<input type="radio" name="emailtype" value="html" checked="checked">HTML <input type="radio" name="emailtype" value="text">Text <input type="radio" name="emailtype" value="mobile">Mobile Device<br />
<br />
<input type="submit" id="SendButton" name="submit" class="textinput" value="Submit" />
</form>
</div>
<div id="message">
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
var emailEntered,
fnameVal,
lnameVal,
emailtypeVal;
$(document).ready(function() {
$("#SendButton").click(function() {
$(".error").hide();
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailaddressVal = $("#email").val();
if(emailaddressVal == '') {
$("#message").html('<span class="error">Enter your email address before submitting.</span>');
return false;
}
else if(!emailReg.test(emailaddressVal)) {
$("#message").html("<span class='error'>That is not an email address. Typo?</span>");
return false;
}
else {
emailEntered = escape($('#email').val());
}
fnameVal = escape($("#fname").val());
lnameVal = escape($("#lname").val());
emailtypeVal = $('input:radio[name=emailtype]:checked').val();
});
$('#signup').submit(function() {
$("#message").html("<span class='error'>Adding your email address...</span>");
$.ajax({
url: 'inc/store-address.php', // proper url to your "store-address.php" file
data: 'ajax=true&email=' + emailEntered +'&fname=' + fnameVal + '&lname=' + lnameVal + '&emailtype=' + emailtypeVal,
success: function(msg) {
$('#message').html(msg);
}
});
return false;
});
});
</script>
</body>
</html>
必要な部品...
上記または同様の方法で構築されたindex.html 。jQuery では、外観とオプションは無限大です。
Mailchimp サイトの PHP サンプルの一部としてダウンロードされ、API KEYとLIST IDで変更されたstore- address.php ファイル。他のオプション フィールドを配列に追加する必要があります。
Mailchimpサイトからダウンロードした MCAPI.class.php ファイル (PHP 5 の場合はバージョン 1.3、PHP 4 の場合はバージョン 1.2)。store-address.phpと同じディレクトリに配置するか、store- address.php内の URL パスを更新して見つけられるようにする必要があります。