luyadev/luya-module-mailchimp

此模块提供了一种简单的方式来构建自己的表单,用于在MailChimp时事通讯中进行用户注册。

安装次数: 6,560

依赖: 0

建议者: 0

安全性: 0

星标: 1

关注者: 7

分支: 2

类型:luya-module

3.0.0 2024-01-03 14:28 UTC

This package is auto-updated.

Last update: 2024-09-03 15:50:10 UTC


README

LUYA Logo

LUYA MAILCHIMP 模块

LUYA Total Downloads Latest Stable Version Join the chat at https://gitter.im/luyadev/luya

此模块提供了一种简单的方式来构建自己的表单,用于在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,在attributesrulesattributeLabels中输入所有列表字段。如你所见,mailchimp中的列表字段名称将用作模型属性,然后可以通过在rules中定义的Yii规则进行验证。

视图文件

在您的模块名称目录下的views文件夹中创建两个视图文件:_mail.phpindex.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调用,并查看给出的响应。只需滚动到页面底部即可。