eZ Mautic エクステンション
この記事は Mautic Advent Calendar 2016 の21日目の担当になります。4日ほど遅刻してしまい面目ありません。
本来は Symfony の Bundle で色々機能をつけて作成したかったのですが、時間がなかったためレガシースタックベースで Mautic のスニペットを出力するエクステンションを作成しました。
eZ Publish 5.x のレガシーテンプレートまたは eZ Publish 4.x 用になります。
eZ Platform への対応、GitHub および Composer での公開については追って対応したいと思います。
作り方
エクステンションのベースの作成
ディレクトリーの作成
mkdir ezpublish_legacy/extension/ezmautic
レガシースタックベースのエクステンションは ezpublish_legacy 配下の extension ディレクトリーに配置します。
エクステンション情報の作成
エクステンション情報として、エクステンションのルートに extension.xml ファイルを作成します。 1
この情報は管理画面の /ez/ezinfo/about で出力されます。
cat << "_EOF_" > ezpublish_legacy/extension/ezmautic/extension.xml
<?xml version="1.0" encoding="utf-8" ?>
<software>
<metadata>
<name>eZ Mautic</name>
<version>0.0.1</version>
<copyright>Copyright (C) 2016-2017 Bezeklik Tecnica</copyright>
<license>GNU General Public License v2.0</license>
</metadata>
</software>
_EOF_
オートロードファイルの作成
mkdir extension/ezmautic/autoloads
cat << "_EOF_" > ezpublish_legacy/extension/ezmautic/autoloads/eztemplateautoload.php
<?php
$eZTemplateOperatorArray = array();
$eZTemplateOperatorArray[] = array( 'script' => 'extension/ezmautic/autoloads/ezmautictemplatefunctions.php',
'class' => 'ezMauticTemplateFunctions',
'operator_names' => array_keys( ezMauticTemplateFunctions::$operators ) );
_EOF_
クラスの作成
cat << "_EOF_" > ezpublish_legacy/extension/ezmautic/autoloads/ezmautictemplatefunctions.php
<?php
class ezMauticTemplateFunctions
{
static $operators = array(
'ezmautic_script' => array(),
);
function operatorList()
{
return array_keys( self::$operators );
}
function namedParameterPerOperator()
{
return true;
}
function namedParameterList()
{
return self::$operators;
}
function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters )
{
switch ( $operatorName )
{
case 'ezmautic_script':
{
$operatorValue = self::getMauticSnippet();
} break;
}
}
public static function getMauticSnippet()
{
return <<< EOS
<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','{$base_url}/mtc.js','mt');
mt('send', 'pageview');
</script>
EOS;
}
}
_EOF_
エクステンションの有効化
管理画面の「システム設定」タブの「エクステンション」を開き、 リストから ezmautic にチェックを入れ、「更新」ボタンを押下してエクステンションを有効化、その後「エクステンション用のオートーロード配列の再生成」ボタンを押下してオートロード配列を再生成します。
テンプレート
テンプレートに以下のタグを挿入することでスニペットが出力されます。
{ezmautic_script}