0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

eZ Mautic エクステンション

Last updated at Posted at 2016-12-25

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}
  1. https://doc.ez.no/eZ-Publish/Technical-manual/4.7/Installation/Extensions/Extension-load-ordering

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?