luyadev / luya-module-mailchimp
此模块提供了一种简单的方式来构建自己的表单,用于在MailChimp时事通讯中进行用户注册。
Requires
Requires (Dev)
- luyadev/luya-core: ^2.0
- luyadev/luya-testsuite: ^3.0
README
LUYA MAILCHIMP 模块
此模块提供了一种简单的方式来构建自己的表单,用于在MailChimp时事通讯中进行用户注册。
准备
在安装和配置该模块之前,您需要设置您的Mailchimp账户。注册成功后,创建一个新的邮件列表并添加您的列表字段。建议您直接在列表视图下的“设置 > 列表字段和 |MERGE| 标签”下添加它们。设置好您的邮件列表后,提取列表ID并记录所有列表字段名称。此外,您还需要获取您的账户API密钥。有了这些信息,您就可以设置Mailchimp Luya模块了。
安装
通过composer需要mailchimp模块
composer require luyadev/luya-module-mailchimp
将mailchimp表单模块添加到您的配置中
'modules' => [ //... 'newsletter-form' => [ 'class' => 'luya\mailchimp\Module', 'listId' => 'MailChimp-List-ID', 'attributes' => [ 'email', 'firstname', 'lastname', 'street', 'zip_city', 'country' ], 'rules' => [ [['email', 'firstname', 'lastname', 'zip_city', 'country'], 'required'], ['email', 'email'], ], 'attributeLabels' => [ 'email' => 'E-Mail', 'firstname' => 'Firstname', 'lastname' => 'Lastname', 'street' => 'Street', 'zip_city' => 'Zip/City', 'country' => 'Country', ], 'recipients' => [ 'registration-confirm@host.ip', ], 'mailchimpApi' => 'MailChimp API Key', ],
默认情况下,LUYA会将值封装到Yii::t('app', $value)
函数中,以便您能够翻译属性标签。在上面的示例中,“电子邮件”或“名字”将如下所示:Yii::t('app', 'E-Mail')
和Yii::t('app', 'Firstname')
。
在mailchimpAPI中输入您的API密钥,在listid中输入您的列表ID,在attributes、rules和attributeLabels中输入所有列表字段。如你所见,mailchimp中的列表字段名称将用作模型属性,然后可以通过在rules中定义的Yii规则进行验证。
视图文件
在您的模块名称目录下的views文件夹中创建两个视图文件:_mail.php
和index.php
_mail.php
在此视图中定义您的电子邮件确认管理员邮件。如果您留空了recipient
,则不会发送确认邮件,您可以直接跳过视图定义。
<h2><?= Yii::$app->siteTitle;?> Newsletter Registration</h2> <table border="0" cellpadding="5" cellspacing="2" width="100%"> <?php foreach($model->getAttributes() as $key => $value): ?> <tr> <td><b><?= $model->getAttributeLabel($key); ?>:</b></td> <td><?= nl2br($value); ?></td> </tr> <?php endforeach; ?> </table>
index.php
在此视图中定义您的注册表单。它还包括成功和错误消息输出。表单字段必须与attributes
定义相对应。
<?php use yii\widgets\ActiveForm; use yii\helpers\Html; <?php if (Yii::$app->session->getFlash('mailchimpSuccess')): ?> <div class="alert alert-success">You've successfully subscribed to the newsletter.</div> <?php else: ?> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'email'); ?> <?= $form->field($model, 'firstname'); ?> <?= $form->field($model, 'lastname'); ?> <?= $form->field($model, 'zip_city'); ?> <?= $form->field($model, 'country'); ?> <?= Html::submitButton(Yii::t('app', 'Submit'), ['class' => 'btn btn-primary']) ?> <?php ActiveForm::end(); ?> <?php endif; ?>
发送当前语言
为了让Mailchimp知道访问者使用的是哪种语言,请将字段mc_language
添加到attributes
中,并为它创建一个safe
规则(或将其添加到require
规则中)。
在视图文件中,添加以下行
<?= $form->field($model, 'mc_language')->hiddenInput(['value'=> Yii::$app->composition->langShortCode])->label(false) ?>
将模块嵌入到CMS中
添加一个新的模块页面,并选择您配置的mailchimp模块名称。在上面的配置示例中,我们使用了newsletter-form。确保站点可见且在线,然后您就可以使用该模块通过定义的定制表单将用户注册到mailchimp时事通讯列表中。
某些事情没有按预期工作
您可以在获取您的API密钥的同一页面上检查您的账户API调用,并查看给出的响应。只需滚动到页面底部即可。