aelvan/mailchimp-subscribe

此包已被 弃用 并不再维护。没有建议的替代包。

用于订阅 MailChimp 听众的简单 Craft 插件。

安装次数: 126 978

依赖: 0

建议者: 0

安全: 0

星级: 116

关注者: 9

分支: 44

公开问题: 6

类型:craft-plugin

4.0.0 2022-05-11 20:43 UTC

README

自从它问世以来已有九年(在插件年数中,这相当于108个人年),现在是时候让这个插件退休了。我已创建了一个 Craft 4 版本以简化过渡,但将不再进行开发,也不会提供支持。现在是时候开始寻找/创建替代方案了。

Craft CMS 4.x 的 Mailchimp Subscribe 插件

Craft 的 Mailchimp Subscribe 是一个用于处理 Mailchimp 听众的插件。

要求

此插件需要 Craft CMS 4.0.0 或更高版本。

更新说明

从 3.x 版本升级到 4.x 版本

这是一个最低限度的 Craft 4 升级,没有变化。

从 2.x 版本升级到 3.x 版本

太多,请参阅更改日志以获取信息

从 1.x 版本(Craft 2)升级到 2.x 版本(Craft 3)

  • 插件不再可以通过控制面板进行配置,您需要使用配置文件。
  • 动作输入中使用的插件处理程序已从 mailchimpSubscribe 更改为 mailchimp-subscribe
  • 重定向 URL 现在需要在重定向输入中进行哈希处理。

安装

要安装插件,可以从插件商店安装,或按照以下说明进行操作

  1. 通过在项目目录中使用 composer require aelvan/mailchimp-subscribe 通过 composer 安装。
  2. 在 Craft 控制面板的“设置”→“插件”下安装插件,或通过命令行使用 ./craft install/plugin mailchimp-subscribe 安装。
  3. 吃一个香蕉,继续阅读!

配置

必须通过在您的 Craft 配置文件夹(通常为 /config)中创建一个名为 mailchimp-subscribe.php 的文件来配置 Mailchimp Subscribe,并根据需要配置设置。

apiKey [字符串]

默认值: ''
您的 Mailchimp 账户的 API 密钥。此设置是必需的。

audienceId [字符串]

默认值: ''
您希望用户订阅的默认听众 ID。您也可以通过在表单中提交此内容来配置 audienceID(见下文)。

doubleOptIn [布尔值]

默认值: true
表示在订阅时是否应使用双确认订阅。如果启用,用户在添加到受众之前将收到一封确认订阅的电子邮件。

示例配置文件

<?php
return [
    'apiKey' => 'xxxxxxxxxxxxxxxxxxx-us2',
    'audienceId' => '7fw6eq98ca',
    'doubleOptIn' => true,
];

插件配置还支持根据每个站点使用不同的设置。这与Craft的一般配置类似

<?php
return [
    'apiKey' => [
        'siteHandleA' => 'xxxxxxxxxxxxxxxxxxx-us2',
        'siteHandleB' => 'xxxxxxxxxxxxxxxxxxx-us2',
    ],
    'audienceId' => [
        'siteHandleA' => '7fw6eq98ca',
        'siteHandleB' => '3fa8ew9fce',
    ],
    'doubleOptIn' => [
        'siteHandleA' => true,
        'siteHandleB' => false,
    ],
];

用法

Mailchimp Subscribe 允许您订阅、退订和从/到 Mailchimp 受众中删除成员。

将成员订阅到受众

在最简单的形式中,您可以通过只有一个电子邮件输入字段的简单表单来订阅用户

<form class="newsletter-form" action="" method="post">
    {{ csrfInput() }}
    <input type="hidden" name="action" value="mailchimp-subscribe/audience/subscribe">
    
    {% set subscribeResponse = mailchimpSubscribe is defined and mailchimpSubscribe.action == 'subscribe' ? mailchimpSubscribe : null %}
    
    {% if subscribeResponse %}
        {% if subscribeResponse.success %}
            <p>Subscribed successfully!</p>
        {% else %}
            <p>An error occured: {{ subscribeResponse.message }}</p>
        {% endif %}
    {% endif %}

    <div>
        <label for="emailInput"{% if subscribeResponse and subscribeResponse.errorCode=='1000' %} class="error"{% endif %}>
            Email:
        </label>
        <input id="emailInput" type="text" name="email" 
            {% if subscribeResponse and not subscribeResponse.success %}value="{{ subscribeResponse.values.email ?? '' }}"{% endif %}/>
    </div>

    <input type="submit" name="" value="Subscribe"/>
</form>

如果您想在成功后重定向用户,您可以提供重定向参数(就像在任何craft前端表单中做的那样)。您还可以直接从表单中设置或覆盖 audienceId

<form class="newsletter-form" action="" method="post">
    {{ csrfInput() }}
    {{ redirectInput('thankyou') }}
    <input type="hidden" name="action" value="mailchimp-subscribe/audience/subscribe">
    <input type="hidden" name="audienceId" value="1fr4ew09qv">
    
    {% set subscribeResponse = mailchimpSubscribe is defined and mailchimpSubscribe.action == 'subscribe' ? mailchimpSubscribe : null %}
    
    {% if subscribeResponse %}
        {% if not subscribeResponse.success %}
            <p>An error occured: {{ subscribeResponse.message }}</p>
        {% endif %}
    {% endif %}

    <div>
        <label for="emailInput"{% if subscribeResponse and subscribeResponse.errorCode=='1000' %} class="error"{% endif %}>
            Email:
        </label>
        <input id="emailInput" type="text" name="email" 
            {% if subscribeResponse and not subscribeResponse.success %}value="{{ subscribeResponse.values.email ?? '' }}"{% endif %}/>
    </div>

    <input type="submit" name="" value="Subscribe"/>
</form>

您还可以根据Mailchimp API 文档设置或覆盖 email_typemerge_fieldsinterestslanguagevipmarketing_permissionstags

以下示例显示了所有选项的应用 - 显然,您应该根据您的需求进行修改

<form class="newsletter-form" action="" method="post">
    {{ csrfInput() }}
    {{ redirectInput('thankyou') }}
    <input type="hidden" name="action" value="mailchimp-subscribe/audience/subscribe">
    <input type="hidden" name="audienceId" value="2a34d0978q">

    <input type="hidden" name="email_type" value="text">
    <input type="hidden" name="language" value="no">
    <input type="hidden" name="vip" value="yes">
    
    {% set subscribeResponse = mailchimpSubscribe is defined and mailchimpSubscribe.action == 'subscribe' ? mailchimpSubscribe : null %}
    
    {% if subscribeResponse %}
        {% if not subscribeResponse.success %}
            <p>An error occured: {{ subscribeResponse.message }}</p>
        {% endif %}
    {% endif %}

    <div>
        <label for="emailInput"{% if subscribeResponse and subscribeResponse.errorCode=='1000' %} class="error"{% endif %}>
            Email:
        </label>
        <input id="emailInput" type="text" name="email" 
            {% if subscribeResponse and not subscribeResponse.success %}value="{{ subscribeResponse.values.email ?? '' }}"{% endif %}/>
    </div>
    
    <div>
        <label for="firstNameInput">First name:</label>
        <input id="firstNameInput" type="text" name="merge_fields[FNAME]" 
            {% if subscribeResponse and not subscribeResponse.success %}value="{{ subscribeResponse.values.FNAME ?? '' }}"{% endif %}/>
    </div>

    <div>
        <label for="lastNameInput">Last name:</label>
        <input id="lastNameInput" type="text" name="merge_fields[LNAME]" 
            {% if subscribeResponse and not subscribeResponse.success %}value="{{ subscribeResponse.values.LNAME ?? '' }}"{% endif %}/>
    </div>

    <div>
        <h4>Marketing permissions</h4>
        <input type="hidden" name="marketing_permissions" value="">
        <input type="checkbox" value="1c862d81f1" name="marketing_permissions[]">Weekly newsletter<br>
        <input type="checkbox" value="46712a192a" name="marketing_permissions[]">Special offers<br>
        <input type="checkbox" value="46acfd7a2b" name="marketing_permissions[]">Special offers from partners<br>
	</div>
    
    <div>
        <h4>Tags</h4>
        <input type="hidden" value="" name="tags">
        <input type="checkbox" value="One tag" name="tags[]">One tag<br>
        <input type="checkbox" value="Two tag" name="tags[]">Two tag<br>
        <input type="checkbox" value="Three tag" name="tags[]">Three tag<br>
	</div>
				
    {% set interestGroups = craft.mailchimpSubscribe.getInterestGroups('2a34d0978q') %}

	{% if interestGroups and (interestGroups | length > 0) %}
		{% for group in interestGroups %}
		    <div>
                <h4>{{ group.title }}</h4>
                <input type="hidden" value="" name="interests[{{ group.title }}]">
                
                {% if group.type=='checkboxes' %}
                    {% for interest in group.interests %}
                        <input type="checkbox" value="{{ interest.id }}" name="interests[{{ group.title }}][]">{{ interest.name }}<br>
                    {% endfor %}
                {% endif %}
    
                {% if group.type=='radio' %}
                    {% for interest in group.interests %}
                        <input type="radio" value="{{ interest.id }}" name="interests[{{ group.title }}][]">{{ interest.name }}<br>
                    {% endfor %}
                {% endif %}
    
                {% if group.type=='dropdown' %}
                    <select name="interests[{{ group.title }}][]">
                        {% for interest in group.interests %}
                            <option value="{{ interest.id }}">{{ interest.name }}</option>
                        {% endfor %}
                    </select>
                {% endif %}
            </div>
		{% endfor %}
	{% endif %}
	
    <br>
    <input type="submit" name="" value="Subscribe"/>
</form>

请注意

  • 您可以使用模板变量 getInterestGroups 获取与列表关联的兴趣组,如示例中所示。Mailchimp 允许您创建不同类型的组,复选框、单选按钮、下拉菜单等,但它实际上并没有限制添加功能仅限于基于类型的组。您必须根据组类型来执行此操作。

  • 如果您想覆盖/重置任何现有的标签和营销权限,请确保您添加了上面显示的隐藏输入。如果只想追加标签,则省略它。

  • 有关营销权限的更多信息,请参阅下面的 GDPR 部分。

  • 如果您提交的电子邮件地址已订阅您的受众,则不会收到错误消息 - 这是预期的行为。如果您想检查电子邮件是否已在您的受众中,可以使用模板变量 craft.mailchimpSubscribe.getMemberByEmail 或控制器操作 mailchimp-subscribe/audience/get-member-by-email,并检查响应是否为 null 或成员的状态。

从受众中退订成员

您可以通过提交电子邮件地址到退订控制器操作来订阅用户

<form class="newsletter-form" action="" method="post">
    {{ csrfInput() }}
    <input type="hidden" name="action" value="mailchimp-subscribe/audience/unsubscribe">

    {% set unsubscribeResponse = mailchimpSubscribe is defined and mailchimpSubscribe.action == 'unsubscribe' ? mailchimpSubscribe : null %}

    {% if unsubscribeResponse %}
        {% if unsubscribeResponse.success %}
            <p>Unsubscribed successfully!</p>
        {% else %}
            <p>An error occured: {{ unsubscribeResponse.message }}</p>
        {% endif %}
    {% endif %}

    <div class="field-line">
        <label for="emailInput"{% if unsubscribeResponse and unsubscribeResponse.errorCode=='1000' %} class="error"{% endif %}>
            Email:
        </label>
        <input id="emailInput" type="text" name="email" 
            {% if unsubscribeResponse and not unsubscribeResponse.success %}value="{{ unsubscribeResponse.values.email ?? '' }}"{% endif %}/>
    </div>

    <input type="submit" name="" value="Unsubscribe"/>
</form>

从受众中删除成员

您可以通过提交电子邮件地址到退订控制器操作来删除用户

<form class="newsletter-form" action="" method="post">
    {{ csrfInput() }}
    <input type="hidden" name="action" value="mailchimp-subscribe/audience/delete">

    {% set deleteResponse = mailchimpSubscribe is defined and mailchimpSubscribe.action == 'delete' ? mailchimpSubscribe : null %}

    {% if deleteResponse %}
        {% if deleteResponse.success %}
            <p>Deleted successfully!</p>
        {% else %}
            <p>An error occured: {{ deleteResponse.message }}</p>
        {% endif %}
    {% endif %}

    <div>
        <label for="emailInput"{% if deleteResponse and deleteResponse.errorCode=='1000' %} class="error"{% endif %}>
            Email:
        </label>
        <input id="emailInput" type="text" name="email" 
            {% if deleteResponse and not deleteResponse.success %}value="{{ deleteResponse.values.email ?? '' }}"{% endif %}/>
    </div>
    
    <div>
        <label><input type="checkbox" name="permanent"/> Permanent</label>
    </div>
    
    <input type="submit" name="" value="Delete"/>
</form>

permanent 参数是可选的,当启用时,它创建一个永久/硬删除。

退订、删除和永久/硬删除之间的差异

当从受众中退订用户时,该成员的状态被设置为 unsubscribed。所有关于该成员的信息都将保留在 Mailchimp 中,数据可以查询,您可以在 Mailchimp 控制面板中查看它,以后可以将其状态更改为 subscribed

当(软)删除用户时,它与退订基本上相同,除了成员将有一个空的状态,不会在 Mailchimp 控制面板中可见。

当永久(硬)删除用户时,与该成员相关的所有可识别的个人信息均被删除,并且成员将从观众中移除。这是在请求下删除成员的GDPR合规方式。这将使得以后无法重新导入或重新订阅该成员,成员只能通过Mailchimp托管、GDPR合规的订阅表单重新订阅。

获取成员或观众信息

如果您需要获取成员或观众的信息,可以使用模板变量craft.mailchimpSubscribe.getMemberByEmailcraft.mailchimpSubscribe.getAudienceById,或者相应的控制器操作mailchimp-subscribe/audience/get-member-by-emailmailchimp-subscribe/audience/get-audience-by-id(见下文文档)。

返回的数据包含所有来自Mailchimp API的信息,如成员观众的API文档所述。

在Mailchimp Subscribe的先前版本中,有模板变量checkIfInListcheckIfSubscribed。这些现在已被弃用,您应该获取成员信息并检查成员的状态

GDPR和营销权限

在撰写本文(2019年6月)时,是否通过API订阅被视为Mailchimp的GDPR合规尚不清楚,因此,如果您为欧盟客户提供服务,最安全的方式可能是假设不合规,并使用他们托管的表单。

尽管如此,API支持更新营销权限,因此请随意实验。目前创建和编辑营销权限的唯一方法是创建一个GDPR启用的观众的新注册表单,并编辑附加的“营销权限”块。要在您自己的表单中创建输入复选框,您需要获取每个权限的ID。目前获取权限ID的唯一方法是获取已订阅列表的成员的信息。因此,先订阅一个用户,然后执行(仅在devMode启用时dump可用)

{{ dump(craft.mailchimpSubscribe.getMarketingPermissionsByEmail('myemail@domain.com')) }}

这将输出一个包含营销权限的数组,其中重要部分是您需要添加到表单中的marketing_permission_id

...
<input type="hidden" name="marketing_permissions" value="">
<input type="checkbox" value="1c862d81f1" name="marketing_permissions[]">Weekly newsletter<br>
<input type="checkbox" value="46712a192a" name="marketing_permissions[]">Special offers<br>
<input type="checkbox" value="46acfd7a2b" name="marketing_permissions[]">Special offers from partners<br>
...

再次强调,请确保您的表单实际上是GDPR合规的,并且不要责怪我。

事件

有多个事件可以触发您触发自定义代码的能力。目前我们有订阅、取消订阅和删除动作发生时的事件。所有事件都应该使用MailchimpSubscribeService类来监听,以下是一些示例

onAfterSubscribe

onAfterSubscribe事件会在成功订阅动作发生时触发。SubscribeEvent类将包含以下属性

  • (string) email
  • (string) audienceId
use aelvan\mailchimpsubscribe\events\SubscribeEvent;
use aelvan\mailchimpsubscribe\services\MailchimpSubscribeService;

Event::on(
    MailchimpSubscribeService::class,
    MailchimpSubscribeService::EVENT_AFTER_SUBSCRIBE,
    function (SubscribeEvent $event) {
        // custom logic
    }
);

onAfterUnsubscribe

onAfterSubscribe事件会在成功取消订阅动作发生时触发。UnsubscribeEvent类将包含以下属性

  • (string) email
  • (string) audienceId
use aelvan\mailchimpsubscribe\events\UnsubscribeEvent;
use aelvan\mailchimpsubscribe\services\MailchimpSubscribeService;

Event::on(
    MailchimpSubscribeService::class,
    MailchimpSubscribeService::EVENT_AFTER_UNSUBSCRIBE,
    function (UnsubscribeEvent $event) {
        // custom logic
    }
);

onAfterDelete

onAfterDelete事件会在成功删除动作发生时触发。DeleteEvent类将包含以下属性

  • (string) email
  • (string) audienceId
  • (bool) permanent
use aelvan\mailchimpsubscribe\events\DeleteEvent;
use aelvan\mailchimpsubscribe\services\MailchimpSubscribeService;

Event::on(
    MailchimpSubscribeService::class,
    MailchimpSubscribeService::EVENT_AFTER_DELETE,
    function (DeleteEvent $event) {
        // custom logic
    }
);

控制器操作

所有控制器操作

  • 需要POST,请确保在请求中添加CSRF令牌。
  • 如果请求是AJAX请求/具有正确的头信息,则返回JSON。
  • 如果发生错误,或者在没有重定向的情况下返回到相同的模板,则模板中将可用名为mailchimpSubscribe的变量(参见上面的示例)。

mailchimp-subscribe/audience/subscribe

将成员订阅到受众。可以提交以下变量

email(必需):要订阅的成员的电子邮件。
redirect:成功时重定向到的路由。如果没有设置,则将使用设置mailchimpSubscribe变量的相同路由加载。
audienceId:要订阅成员的受众ID。如果没有设置,将使用配置的audienceId
email_type:成员偏好的电子邮件类型。可以是html(默认)或text
language:成员偏好的语言(请参阅文档了解可能的语言代码)。
vip:设置成员的VIP状态,接受的值为trueyes1(对于true),其他任何内容都视为false(默认)。
merge_fields:在Mailchimp中定义的额外字段的数组(目前在Mailchimp中称为“受众字段和|MERGE|标签”)。
marketing_permissions:应为成员启用的营销权限的数组。
interests:应为成员启用的组兴趣的数组(您可以在Mailchimp中的“管理联系人”>“组”下找到这些兴趣)。
tags:应为成员启用的标签的数组(您可以在Mailchimp中的“管理联系人”>“标签”下找到这些标签)。新标签将在Mailchimp中自动创建。

该操作将返回一个SubscribeResponse,其中action属性设置为subscribe

mailchimp-subscribe/audience/unsubscribe

从受众中取消成员的订阅。可以提交以下变量

email(必需):要取消订阅的成员的电子邮件。
redirect:成功时重定向到的路由。如果没有设置,则将使用设置mailchimpSubscribe变量的相同路由加载。
audienceId:要从中取消订阅成员的受众ID。如果没有设置,将使用配置的audienceId

该操作将返回一个SubscribeResponse,其中action属性设置为unsubscribe

mailchimp-subscribe/audience/delete

从受众中删除成员。可以提交以下变量

email(必需):要删除的成员的电子邮件。
redirect:成功时重定向到的路由。如果没有设置,则将使用设置mailchimpSubscribe变量的相同路由加载。
audienceId:要从中删除成员的受众ID。如果没有设置,将使用配置的audienceId
permanent:如果成员应被永久删除,则设置为true。有关此含义的更多信息,请参阅上面的“取消订阅、删除和永久删除之间的区别”部分。

该操作将返回一个SubscribeResponse,其中action属性设置为delete

mailchimp-subscribe/audience/get-member-by-email

通过电子邮件获取受众中成员的信息。可以提交以下变量

email(必需):要查询的电子邮件。
redirect:成功时重定向到的路由。如果没有设置,则将使用设置mailchimpSubscribe变量的相同路由加载。
audienceId:要取消订阅成员的受众ID。如果没有设置,将使用配置的audienceId

该操作将返回一个MemberResponse,其中action属性设置为get-member

mailchimp-subscribe/audience/get-audience-by-id

通过其ID获取有关受众的信息。以下变量可以提交

audienceId:要获取信息的受众ID。如果未设置,将使用配置的 audienceId
redirect:成功时重定向到的路由。如果没有设置,则将使用设置mailchimpSubscribe变量的相同路由加载。

操作将返回一个 AudienceResponse,其中 action 属性设置为 get-audience

模板变量

在以下定义中,方括号表示可选参数。如果未提交受众ID,则将使用配置文件中的ID。

如果发生错误,所有方法都将返回 null,请参阅您的日志/调试工具栏以获取错误消息。

craft.mailchimpSubscribe.getInterestGroups([$id=''])

以下结构返回受众的兴趣组

[
    0 => [
        'title' => 'Job position'
        'type' => 'radio'
        'interests' => [
            0 => [
                'id' => '3ba93a1818'
                'name' => 'Developer'
            ]
            1 => [
                'id' => '98a725d885'
                'name' => 'Designer'
            ]
            2 => [
                'id' => 'e54cdea2b8'
                'name' => 'Project Manager'
            ]
        ]
    ]
    1 => [
        'title' => 'Interests'
        'type' => 'checkboxes'
        'interests' => [
            0 => [
                'id' => '517e7129x5'
                'name' => 'Donating'
            ]
            1 => [
                'id' => '15128d2daf'
                'name' => 'Volunteering'
            ]
            2 => [
                'id' => 'f254817294'
                'name' => 'Events'
            ]
        ]
    ]
]

craft.mailchimpSubscribe.getAudienceById([$id=''])

查询Mailchimp API以获取受众,并返回完整响应对象。请参阅API文档以获取详细信息。

craft.mailchimpSubscribe.getMemberByEmail($email [, $id = ''])

查询Mailchimp API以获取成员,并返回完整响应对象。请参阅API文档以获取详细信息。

craft.mailchimpSubscribe.getMarketingPermissionsByEmail($email [, $id = ''])

查询Mailchimp API以获取成员,并返回以下结构的该成员的市场营销权限

[
    0 => stdClass#1
    (
        [marketing_permission_id] => '0e963d96x1'
        [text] => 'Weekly newsletter'
        [enabled] => true
    )
    1 => stdClass#2
    (
        [marketing_permission_id] => '42723a122x'
        [text] => 'Special offers'
        [enabled] => false
    )
    2 => stdClass#3
    (
        [marketing_permission_id] => '36cxbd1a8b'
        [text] => 'Special offers from partners'
        [enabled] => false
    )
]

您也可以直接从成员那里获取此信息,此方法仅为了方便。

craft.mailchimpSubscribe.getMemberTagsByEmail($email [, $id = ''])

查询Mailchimp API以获取成员的标签,并按以下结构返回它们

[
    0 => stdClass#1
    (
        [id] => 32608
        [name] => 'One tag'
        [date_added] => '2019-06-24T18:35:07+00:00'
    )
    1 => stdClass#2
    (
        [id] => 32611
        [name] => 'Three tag'
        [date_added] => '2019-06-24T18:35:07+00:00'
    )
]

您也可以直接从成员那里获取此信息,此方法仅为了方便。

服务方法

您可以通过执行类似以下操作的方式从自己的插件或模块中访问Mailchimp Subscribe的服务方法

$msPlugin = Craft::$app->plugins->getPlugin('mailchimp-subscribe');

if ($msPlugin && $msPlugin instanceof \aelvan\mailchimpsubscribe\MailchimpSubscribe) {
    $msPlugin->mailchimpSubscribe->subscribe('my_email@domain.com', '2a34d0978q');
}

可用的公共方法如下(请注意,方括号表示可选参数)

subscribe($email, $audienceId[, $opts=null]): SubscribeResponse

将成员订阅到受众。第三个参数是可选的,是一个数组,其中包含上面文档中记录的所有可能的参数。响应始终是一个SubscribeResponse,如下所示。示例

$response = $msPlugin->mailchimpSubscribe->subscribe('myemail@domain.com', '2a34d0978q', [
    'email_type' => 'html', 
    'language' => 'no',
    'merge_fields' => [
        'FNAME' => 'Lorem',
        'LNAME' => 'Ipsum'
    ]
]);

unsubscribe($email, $audienceId): SubscribeResponse

从受众中取消成员的订阅。响应始终是一个SubscribeResponse,如下所示。示例

$response = $msPlugin->mailchimpSubscribe->unsubscribe('myemail@domain.com', '2a34d0978q');

delete($email, $audienceId[, $permanent = false]): SubscribeResponse

从受众中删除一个成员。如果第三个参数为true,则执行硬删除,参见上面的解释以了解取消订阅、删除和硬删除之间的区别。响应始终为下面的SubscribeResponse。示例

$response = $msPlugin->mailchimpSubscribe->delete('myemail@domain.com', '2a34d0978q', true);

getMemberByEmail($email, $audienceId): Collection|null

从受众中获取成员信息。如果发生错误,则响应为null(请参阅日志/调试工具栏以获取错误消息),如果请求成功,则返回Collection对象。集合将包含有关成员的所有信息,如在Mailchimp API中记录。示例

$member = $msPlugin->mailchimpSubscribe->getMemberByEmail('myemail@domain.com', '2a34d0978q');

getAudienceById($audienceId): Collection|null

获取受众信息。如果发生错误,则响应为null(请参阅日志/调试工具栏以获取错误消息),如果请求成功,则返回Collection对象。集合将包含有关受众的所有信息,如在Mailchimp API中记录。示例

$member = $msPlugin->mailchimpSubscribe->getAudienceById('2a34d0978q');

getMarketingPermissionsByEmail($email, $audienceId): array|null

从成员中获取营销权限。如果发生错误,则响应为null(请参阅日志/调试工具栏以获取错误消息),如果请求成功,则返回数组。有关返回数据的示例,请参阅相应模板变量的文档。

getInterestGroups($audienceId): array|null

从受众中获取兴趣组。如果发生错误,则响应为null(请参阅日志/调试工具栏以获取错误消息),如果请求成功,则返回数组。有关返回数据的示例,请参阅相应模板变量的文档。

getMemberTagsByEmail($email, $audienceId): array|null

从成员中获取标签。如果发生错误,则响应为null(请参阅日志/调试工具栏以获取错误消息),如果请求成功,则返回数组。有关返回数据的示例,请参阅相应模板变量的文档。

模型

SubscribeResponse

subscribeunsubscribedelete控制器操作返回。具有以下属性

action:指示触发响应所使用的操作之一。如果您在单个模板上具有多种类型的表单,则此方法可用于区分哪个表单已提交。
success:布尔值,指示请求是否成功。
errorCode:如果发生错误,则设置错误代码。1000表示无效的电子邮件,2000表示无效的API密钥或audienceId。对于所有其他错误代码,请参阅Mailchimp API文档
message:如果发生错误,则返回错误消息。
values:表单提交的值。
response:请求导致的完整Mailchimp响应。

MemberResponse

get-member-by-email 控制器操作返回。具有以下属性

action:指示哪个操作被用来触发响应,对于这个响应,始终是 'get-member'
success:布尔值,指示请求是否成功。
response:请求导致的完整Mailchimp响应。

AudienceResponse

get-audience-by-id 控制器操作返回。具有以下属性

action:指示哪个操作被用来触发响应,对于这个响应,始终是 'get-audience'
success:布尔值,指示请求是否成功。
response:请求导致的完整Mailchimp响应。

价格、许可证和支持

插件采用 MIT 许可证发布,这意味着只要不怪我,你可以用它做任何你想做的事情。它是免费的,这意味着绝对不提供任何支持。

变更日志

查看 CHANGELOG.md