dmk/mkoptin

MK Optin 扩展

安装: 56

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 13

分支: 0

公开问题: 0

类型:typo3-cms-extension

v10.0.0 2021-12-08 14:53 UTC

This package is auto-updated.

Last update: 2024-09-08 13:52:59 UTC


README

TYPO3 compatibility Latest Stable Version Total Downloads Build Status Code Coverage License

此 TYPO3 扩展通过 fluid 邮件提供 opt-in 流程。

简短说明

  • 可以触发发送 opt-in 邮件
  • 通过电子邮件中的激活链接处理验证。
  • 触发 opt-in 验证成功事件。
  • 将 opt-in 信息添加到 tca。

安装

通过 composer 安装 TYPO3。
从项目根目录,您需要运行

composer require dmk/mkoptin

启动新的 opt-in 流程

class MyAwesomeManager
{
    private OptinManager $optinManager;

    public function __construct(
        OptinManager $optinManager
    ) {
        $this->optinManager = $optinManager;
    }
    
    protected function handleOptIn(string $email): void
    {
        $optin = $this->optinManager->createOptinForEmail($email);

        // opt in already done :)
        if ($optin->isValidated()) {
            // opt-in already performed, do your finalize stuff here

            return;
        }

        // opt-in outstanding, send opt-in mail
        // finalize stuff has to be performed by event listener after opt-in validation

        $this->optinManager->sendValidationMailForOptin($optin);
    }
}

注册 opt-in 验证成功事件监听器

为什么我们需要这个?
在电子邮件验证后执行操作,例如激活记录或发送确认邮件。

services:
    DMK\MyAwesomeExtension\Event\EventListener\OptinValidationSuccessEventListener:
        tags:
            -
                name: 'event.listener'
                identifier: 'MyAwesomeOptinValidationSuccessEventListener'
                event: DMK\Optin\Event\OptinValidationSuccessEvent
class OptinValidationSuccessEventListener
{
    private MyAwesomeManager $manager;

    public function __construct(
        MyAwesomeManager $manager
    ) {
        $this->manager = $manager;
    }

    public function __invoke(OptinValidationSuccessEvent $event): void
    {
        $this->manager->handleOptinValidation($event->getOptin());
    }
}

class MyAwesomeManager
{
    public function handleOptinValidation(Optin $optin): void
    {
        // opt-in performed, do your finalize stuff here
    }
}

将 opt-in 信息添加到 TCA

为了输出数据记录的 opt-in 信息,必须添加以下 TCA 列

return [
    'columns' => [
        'optin' => [
            'label' => 'LLL:EXT:mkoptin/Resources/Private/Language/locallang_db.xlf:tx_mkoptin_domain_model_optin',
            'config' => [
                'type' => 'user',
                'renderType' => 'optInStateElement',
            ],
        ],
    ]
];

OptIn State Element

警告:目前数据记录中的字段必须始终是 email

模板

plugin {
    tx_mkoptin {
        view {
            templateRootPath = EXT:myawesomeextension/Resources/Private/Templates/Optin
            partialRootPath = EXT:myawesomeextension/Resources/Private/Partials/Optin
            layoutRootPath = EXT:myawesomeextension/Resources/Private/Layouts/Optin
        }
    }
}

@TODOs

  • 实现电子邮件字段配置表