【mautic】concrete5のユーザ登録時にmauticのコンタクトに登録する方法

毎月、mautic meetup nagoya勉強会ベースキャンプ名古屋で開催しています。

7月の勉強会は【Mautic Meetup Nagoya #4 「Contacts は奥が深い」】というタイトルの勉強会で、コンタクト(旧称:リード)の使い方について学びました。

そこでconcrete5とmauticを連携させる簡単なデモを実施しましたので、実装方法を残しておきます。

Contents

やること

  • concrete5のユーザ登録時にユーザ情報をmauticと連動させる
    • 連動する情報は以下のとおり。
      • メールアドレス( email )
      • 姓( lastname )、名( firstname )
      • 会社名( company )

concrete5は誰でも認証なしにユーザ登録出来る設定にしています。

mautic側の設定

mauticのコンタクトを外部から操作するには、コンタクトフィールドの設定が必要です。

1. 右上の歯車マークをクリックして「Custom Fields」を選択します。

mauticのフィールド設定

2. First Nameを選択して詳細画面を開きます

First Name選択

3. 右側に表示されているPublicly updatable を「はい」に設定します

Publicly updatable
Publicly updatable を「はい」に設定します

この設定をすることで外部からのコンタクトの設定値を更新出来るようになります。

4. 連携予定のその他のコンタクトフィールドも同様に設定します。

  • メールアドレス( email )
  • 姓( lastname )、名( firstname )
  • 会社名( company )

concrete5側の設定

1. 誰でもユーザ登録できるようにします

concrete5ユーザ登録の設定

2. ユーザ属性を追加します

ユーザ属性追加

3. ユーザ登録画面にトラッキングコードを挿入します

application/single_pages ディレクトリに、以下のファイル(register.php)をダウンロードします。

 

gist – register.php


<?php defined('C5_EXECUTE') or die("Access Denied.");
$token = \Core::make('Concrete\Core\Validation\CSRF\Token');
?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<div class="page-header">
<h1><?php echo t('Site Registration')?></h1>
<p>Mauticとの連携を試みます!</p>
</div>
</div>
</div>
<?php
$attribs = UserAttributeKey::getRegistrationList();
$ma_tag = "";
if($registerSuccess) { ?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<?php switch($registerSuccess) {
case "registered":
?>
<p><strong><?php echo $successMsg ?></strong><br/><br/>
<a href="<?php echo $view->url('/')?>"><?php echo t('Return to Home')?></a></p>
<?php
break;
case "validate":
?>
<p><?php echo $successMsg[0] ?></p>
<p><?php echo $successMsg[1] ?></p>
<p><a href="<?php echo $view->url('/')?>"><?php echo t('Return to Home')?></a></p>
<?php
break;
case "pending":
?>
<p><?php echo $successMsg ?></p>
<p><a href="<?php echo $view->url('/')?>"><?php echo t('Return to Home')?></a></p>
<?php
break;
}
$u = new User();
if (is_object($u) && $u->checkLogin()) {
$uinfo = UserInfo::getByID($u->uID);
$email = $uinfo->getUserEmail();
$first_name = $uinfo->getAttribute("first_name");
$last_name = $uinfo->getAttribute("last_name");
$company = $uinfo->getAttribute("company");
$ma_tag = "{email: '" . $email . "', firstname: '" . $first_name . "', lastname: '" . $last_name . "', company: '" . $company . "'}";
}
?>
</div>
</div>
<?php
} else { ?>
<form method="post" action="<?php echo $view->url('/register', 'do_register')?>" class="form-stacked">
<?php $token->output('register.do_register') ?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<fieldset>
<legend><?php echo t('Your Details')?></legend>
<?php
if ($displayUserName) {
?>
<div class="form-group">
<?php echo $form->label('uName',t('Username'))?>
<?php echo $form->text('uName')?>
</div>
<?php
}
?>
<div class="form-group">
<?php echo $form->label('uEmail',t('Email Address'))?>
<?php echo $form->text('uEmail')?>
</div>
<div class="form-group">
<?php echo $form->label('uPassword',t('Password'))?>
<?php echo $form->password('uPassword',array('autocomplete' => 'off'))?>
</div>
<div class="form-group">
<?php echo $form->label('uPasswordConfirm',t('Confirm Password'))?>
<?php echo $form->password('uPasswordConfirm',array('autocomplete' => 'off'))?>
</div>
</fieldset>
</div>
</div>
<?php
if (count($attribs) > 0) {
?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<fieldset>
<legend><?php echo t('Options')?></legend>
<?php
$af = Loader::helper('form/attribute');
foreach($attribs as $ak) {
echo $af->display($ak, $ak->isAttributeKeyRequiredOnRegister());
}
?>
</fieldset>
</div>
</div>
<?php
}
if (Config::get('concrete.user.registration.captcha')) {
?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1 ">
<div class="form-group">
<?php
$captcha = Loader::helper('validation/captcha');
echo $captcha->label();
?>
<?php
$captcha->showInput();
$captcha->display();
?>
</div>
</div>
</div>
<?php } ?>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<div class="form-actions">
<?php echo $form->hidden('rcID', $rcID); ?>
<?php echo $form->submit('register', t('Register') . ' &gt;', array('class' => 'btn-lg btn-primary'))?>
</div>
</div>
</div>
</form>
<?php
}
?>
<script>
(function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
})(window,document,'script','http://example.com/mtc.js','mt');
<?php if( $ma_tag ) : ?>
mt('send', 'pageview', <?php echo $ma_tag; ?>);
<?php else: ?>
mt('send', 'pageview');
<?php endif; ?>
</script>

view raw

register.php

hosted with ❤ by GitHub

register.php の以下の部分を自身のURLに変更します。

ソースの簡単に説明

以下の部分で登録完了した方の情報をトラッキングコードに含めています。

以上でユーザ登録をしてくれた方を、mautic に連携出来るようになります。



「【mautic】concrete5のユーザ登録時にmauticのコンタクトに登録する方法」への1件のフィードバック

コメントを残す