1. Qiita
  2. 投稿
  3. Mautic

eZ Mautic エクステンション

  • 0
    いいね
  • 0
    コメント

    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 にチェックを入れ、「更新」ボタンを押下してエクステンションを有効化、その後「エクステンション用のオートーロード配列の再生成」ボタンを押下してオートロード配列を再生成します。

    extension.png

    テンプレート

    テンプレートに以下のタグを挿入することでスニペットが出力されます。

    {ezmautic_script}