WordPress・WEB系の開発(プログラム)関係や技術情報ほか、技術情報全般を掲載

  • このエントリーをはてなブックマークに追加

eZ Publish 独自オペレーターを作成しサイトアクセス名を取得する方法

既存のテンプレート関数だけでは、欲しい情報を取得出来ない場合に、独自オペレーターを作成して必要なデータを取得します。
下記は、独自オペレーターの Hoge を作成して、サイトアクセス名を取得する方法のサンプルです。

{hoge('site_access_name')}

などの書式で、サイトアクセス名を呼び出すことが出来ます。

■必要なファイル/ディレクトリ:

hogeextension
    └ autoloads
           └ eztemplateautoload.php
           └ hogeoperator.php
    └ classes
           └ hoge.php
    └ settings
           └ site.ini.append.php

■autoloads/eztemplateautoload.phpの内容:

<?php 
$eZTemplateOperatorArray = array(); 

// $eZTemplateOperatorArray[] = array(     'script'            => 'extension/hogeext/autoloads/hogeoperator.php',
    'class'             => 'HogeOperator',
    'operator_names'    => array( 'hoge' )
);

■autoloads/hogeoperator.phpの内容:

<?php 
/** 
 *  
*/ class HogeOperator 
{     
    public $Operators;           

    /**     
     *      
     */     
    function __construct( $name = "hoge" )     
    {         
        $this->Operators = array( $name );
    }

    /**
     * 
     */
    function operatorList()
    {
        return $this->Operators;
    }

    /**
     * 
     */
    function namedParameterPerOperator()
    {
        return true;
    }

    /**
     * 
     */
    function namedParameterList()
    {
        return array(
            'jdo' => array(
                'result_type' => array(
                    'type'      => 'string',
                    'required'  => true,
                    'default'   => 'site_access_name'
                )
            )
        );
    }


    /**
     * 
     */
    function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters, $placement )
    {
        
        $result_type = $namedParameters['result_type'];
        
        //
        switch ($result_type) {
            case 'site_access_name':
                $operatorValue = Hoge::getSiteAccessName('admin');
                break;
            case 'site_access_name_front':
                $operatorValue = Hoge::getSiteAccessName('front');
                break;
        }

    }
}

■classes/hoge.phpの内容:

<?php

/**
 * 
 */
class Hoge {
    
    /**
     * サイトアクセス名
     */
    public function getSiteAccessName($side='admin')
    {
        $site_access = $GLOBALS['eZCurrentAccess'];
        
        if ($side=='admin') {
            //管理画面サイトアクセス名
            $site_access_name = $site_access['name'];
        } else {
            //フロントサイトアクセス名
            $site_access_name = str_replace('_admin', '', $site_access['name']);
        }
        return $site_access_name;
    }
    
}

関連記事

コメントは利用できません。

アーカイブ