2008年に最初に執筆されその後2010年にeZ Publish4.x用に描き直されたFelix Woldtの「An Introduction to Developing eZ Publish Extensions」をFelixの許可をもらい日本語訳しました。
eZ Publishのextension開発まわりのオフィシャルドキュメントはAPIドキュメンテーションくらいしかないともいえるので、この記事は取っ掛かりとして有用です。
5. module.ini.append.php という名前のコンフィグファイルで jacextension でのモジュールを見つける
よう eZ Publish に命じます。このことにより、eZ Publish は extension/jacextension/modules/に設置さ
れたモジュール(modul1 のような)を読み込みます。
ヒ ン ト : INI ファイルでは行の最後に空白(スペース)を付けてはなりません!付けると正しく動作し
ないことがあります!
<?php/* #?ini charset="utf-8"?
# tell ez publish to search after modules in the extension jacextension
[ModuleSettings]
ExtensionRepositories[]=jacextension
# For eZ Publish 4.1 and up you'll need to specify your module name as well
ModuleList[]=modul1
*/
?>
例 1: モジュール設定ファイル:extension/jacextension/settings/module.ini.append.php
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
6. extension の初期知識
ビューリスト
モジュールのビューは module.php というファイルで定義します。モジュールのビューを利用すること
により PHP ファイルへのアクセスが可能となります。このサンプルでは$ViewList['list']によりビューの
名前を定義でき、list.php というカスタム PHP スクリプトにアクセスさせることができます。
また、ここではビューにいくつかのパラメーターを渡します。例えば、ParamOne と ParamTwo とい
う 2 つのパラメータを定義する場合は下記のように記載します。
'params' => array('ParamOne','ParamTwo')
下記は module.php での例です。
<?php
// Introduction in the development of eZ Publish extensions
$Module = array( 'name' => 'Example Modul1' );
$ViewList = array();
// new View list with 2 fixed parameters and
// 2 parameters in order
// http://.../modul1/list/ $Params['ParamOne'] /
// $Params['ParamTwo']/ param4/$Params['4Param'] /param3/$Params['3Param']
$ViewList['list'] = array( 'script' => 'list.php',
'functions' => array( 'read' ),
'params' => array('ParamOne', 'ParamTwo'),
'unordered_params' => array('param3' => '3Param',
'param4' => '4Param') );
// The entries in the user rights
// are used in the View definition, to assign rights to own View functions
// in the user roles
$FunctionList = array();
$FunctionList['read'] = array();
?>
例 2 ビューのコンフィグ: extension/jacextension/modules/modul1/module.php
このモジュール用の URL:
http://localhost/ez/index.php/plain_site/modul1/list/<ValueParamOne>/<ValueParamTwo>
上記 URL を経由して下記のように list.php で記述した変数にアクセスできます。
$valueParamOne = $Params['ParamOne'];
$valueParamTwo = $Params['ParamTwo'];
上記のようなパラメータアクセスを順番付け有りパラメータ(オーダード・パラメーター)と呼びます。
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
10. extension モジュールの module.php 上の配列$FunctionList において function を定義します。配列のキ
ーとして function を記述します。この例では user function の read としてビューリストにリンクしまし
ょう。
$FunctionList['read'] = array(); // with 'functions' => array( 'read' ) in the $ViewList array
配列$FunctionList を使って、特定の user function とモジュールのビューをリンクさせます。user
function には「create」もあり、すべてのビューでコンテンツ作成ができるような権限を付与すること
もできます。今回は編集者にのみ create 権限を利用可能にします。
また、 (読む)function については匿名ユーザー(Anonymous user)を含め、すべてのユーザー
「read」
に許可を与えます。
権限設定についてより詳しく知りたい方は、チュートリアル「Adding custom security policy limitations
to your modules」をチェックしてください。
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
11. テンプレート・システム
さて、list.php 上の echo command での表示では力不足で要件に合わず、テンプレートを使って情報を
表示したくなったとします。その要件を満たすためには、
jacextension/design/standard/templates/modul1/に list.tpl を作成します。
テンプレート利用するためには、jacextension が design extension であることを宣言することが必須で
す。そのため、フォルダ jacextension/settings/にコンフィグファイル design.ini.append.php を作成しま
す。(例 7)
<?php /* #?ini charset="utf-8"?
# transmit to eZ, to search for designs in jacextension
[ExtensionSettings]
DesignExtensions[]=jacextension
*/ ?>
例 7. jacextension を design extension として宣言
その後、list.php で配列$dataArray(文字列の配列)を宣言します。この配列の値はテンプレート list.tpl
で利用します。テンプレート list.tpl を利用するため、まずテンプレートオブジェクトを初期化しなけれ
ばなりません。
$tpl = eZTemplate::factory(); // Notation from eZP 4.3. Before this version, use templateInit()
function
それからビュー上の URL から取得できるパラメータ配列 ($viewParameters)と予め php 上で定義する
配列 ($dataArray) を、テンプレート変数として{$view_parameters}や{$data_array}といった形で利
用できるように下記記述を行います。
$tpl->setVariable( 'view_parameters', $viewParameters );
$tpl->setVariable( 'data_array', $dataArray );
次にテンプレート list.tpl 上で適当に定義したテンプレート変数(この例では$view_parameters と
$data_array しかないですが)を組み込みます。そして、$Result['content']に上記結果を格納します。
デフォルトでは、eZ Publish のメインテンプレート pagelayout.tpl において {$module_result.content}
という変数で上記結果を呼び出すことができます。 (例 8)
<?php
// Example array with strings
$dataArray = array( 'Axel','Volker','Dirk','Jan','Felix' );
...
// initialize Templateobject
$tpl = eZTemplate::factory();
// create view array parameter to put in the template
$viewParameters = array( 'param_one' => $valueParamOne,
'param_two' => $valueParamTwo,
'unordered_param3' => $valueParam3,
'unordered_param4' => $valueParam4 );
// transport the View parameter Array to the template
$tpl->setVariable( 'view_parameters', $viewParameters );
// create example Array in the template => {$data_array}
$tpl->setVariable( 'data_array', $dataArray );
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
12. // ...
// use find/replace (parsing) in the template and save the result for $module_result.content
$Result['content'] = $tpl->fetch( 'design:modul1/list.tpl' );
//...
?>
例 8. modul1/list.php - 例 3 の拡張
以上の設定/定義により {$view_parameters} と {$data_array} をテンプレート list.tpl 上で呼び出す
ことができるようになりました。{$view_parameters|attribute(show)}という記述をテンプレートに書け
ば$view_parameters の内容を表示できます。また、テンプレート・オペレータ is_set($data_array)に
より変数$data_array が存在するかを確認する記述をしてみましょう。例 9 ではデータがセットされて
いればデータが一覧表示され、セットされていなければ「Attention: no existing data!!」と表示されるよ
うに記述しています。
{* list.tpl – Template for Modulview .../modul1/list/ParamOne/ParamTwo
Check if the variable $data_array exists
- yes: show data as list
- no: show message
*}
{*Show Array $view_parameters: *}
{$view_parameters|attribute('show')}<br />
<h1>Template: modul1/list.tpl</h1>
{if is_set($data_array)}
<ul>
{foreach $data_array as $index => $item}
<li>{$index}: {$item}</li>
{/foreach}
</ul>
{else}
<p>Attention: no existing data!!</p>
{/if}
例 9. eZ テンプレート デザイン modul1/list.tpl extension/jacextension/design/<your_design>templates/modul1/list.tpl)
・ (
さて、http://localhost/ez/index.php/plain_site/modul1/list/table/5 を再度開いてみても前と変化がない場
合があります。なぜでしょう? 答えは画面にも書いてありません。
そんな時、エラーの原因を調べたい場合は eZ Debug を有効化しましょう。また、テンプレートの変化
をスムーズにチェックできるようにするため、テンプレートのキャッシュ機能は無効にしましょう。グ
ローバルな設定 <ezroot>/settings/override/site.ini.append.php を例 10 のように修正します。
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
13. <?php /* #?ini charset="utf-8"?
[DebugSettings]
Debug=inline
DebugOutput=enabled
DebugRedirection=disabled
[TemplateSettings]
ShowXHTMLCode=disabled
ShowUsedTemplates=enabled
TemplateCompile=disabled
TemplateCache=disabled
# Optional, will save you from most cache clearings during development
# as modified time on tempaltes are always checked during execution
DevelopmentMode=enabled
*/?>
例 10. グローバルコンフィグファイルでテンプレートでの Debug を有効化: ezroot/settings/override/site.ini.append.php
上記設定の後、再度 http://localhost/ez/index.php/plain_site/modul1/list/table/5 にアクセスしてみましょ
う。するとこんな Debug メッセージが表示されることがあります。
'No template could be loaded for "modul1/list.tpl" using resource "design"'
(modul1/list.tpl としてロードされるはずのテンプレートが見つかりません)
どうやら list.tpl が見当たらないと eZ Publish がいっています。こういった場合は、それまでのテンプレ
ートの状態をキャッシュしている可能性が高いので、 まず eZ Publish のキャッシュをクリアしましょう。
http://localhost/ez/index.php/plain_site_admin/setup/cache にアクセスして 「全てのキャッシュをクリア」
をクリックします。キャッシュをクリアしたら list.tpl は table list や view_parameters、そして、サンプ
ルのデータリストを表示するはずです。同様に Debug 情報も表示されていることでしょう。
この例では、ビューパラメータは下記のような値を持っています。
$view_parameters.param_one='table'
$view_parameters.param_two='5'
ビューパラメータの値は PHP スクリプト list.php やテンプレート list.tpl でのアクションに利用できま
す。(例えば、ID の表示やその ID から値を引き出したりすることができます)
ヒ ン ト :テンプレート変数$view_parameters は eZ の kernel モジュールにおいても有効なため、
node/view/full.tpl といったほとんどのテンプレートで利用できます。
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
14. ビューの作成
さて次に新しいビューを作成してこのサンプルをもっと拡張しましょう。データベース上に配列データ
を保存できるように「jacextension_data」と名づけた新しいデータベース・テーブルを用意します。こ
のテーブルは例 11 のように id | user_id | created | value の4つのカラムを持たせることにします。
CREATE TABLE jacextension_data (
id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
user_id INT( 11 ) NOT NULL ,
created INT( 11 ) NOT NULL ,
value VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
例 11. jacextension_data という新規テーブルを作成するための SQL 文
次に list.php を create.php、 list.tpl を create.tpl としてコピーします。そして、新しいビューや create.php
とリンクするロール function ("create")が利用できるように module.php を拡張します。それから
design:modul1/create.tpl を呼び出せるように create.tpl のテンプレート・コールを変更し、かつ、ビュ
ー modul1/create の権限を調整します。以上が終わったら最後にキャッシュをクリアしましょう。
これで URL http://localhost/ez/index.php/plain_site/modul1/create が動作するためのお膳立てができま
した。しかし、いまのところその URL にアクセスしてもビューパラメータを省略した modul1/list と同
じ見た目となるでしょう。
MySQL データベースにデータを保存するには、ビューにおいて POST や GET を利用してデータを送信
するための HTML フォームが必要です。ですので、テンプレート create.tpl にフォームの記述を行いま
す。この例では GET を利用してデータを送信させましょう。また、テンプレート変数{$status_message}
を新規に用意してユーザーの入力メッセージを表示させましょう。 (例 12 を見てください)
{* create.tpl – template for Modulview .../modul1/create
Html form to save the new data *}
<form action={'modul1/create'|ezurl} method="get">
Name :<br />
<input name="name" type="text" size="50" maxlength="50"><br />
<input type="submit" name="DataCreation" value="Create new data">
<input type="reset" value="Cancel">
</form>
<hr>
Status: {$status_message}
例 12. データを保存するためのフォームを持つテンプレート jacextension/design/standard/templates/modul1/create.tpl
GET / POST
以上により、パラメータ name の GET 値を表示できるように list.php を変更し、その値は PHP スクリ
プトに送信されます。その後、テンプレートの status フィールドにその値が表示されます。GET 値や
POST 値を表示するには eZ Publish フレームワークの eZHTTPTool クラスを利用します。
まず$http = eZHTTPTool::instance()により eZHTTPTool のオブジェクトを参照します。
$http->hasVariable('name')により$_GET['name'] や $_POST['name']が存在するかどうかチェックでき
ます。そして、$http->variable('name')によりその値を取得できます。もし GET 値だけ、とか、POST
値だけ取得したい場合は$http->hasGetVariable('name'); や $http->hasPostVariable('name'); を利用し
ます。
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
15. その他の function(例えばセッション関連)の情報は eZ Publish の API ドキュメントに記述されていま
す。eZHTTPTool class については http://pubsvn.ez.no/doxygen/4.4/html/classeZHTTPTool.html を見て
ください。
ログを出力したいなら、eZLog::write()を利用します。デフォルトのログも様々な情報を出力しています
が、デフォルトのログは見づらいのでオリジナルのログ出力が便利な場合もあるでしょう。
<?php
// modul1/create.php – Function file of View create
$Module = $Params['Module'];
// take copy of global object
$http = eZHTTPTool::instance ();
$value = '';
// If the variable 'name' is sent by GET or POST, show variable
if( $http->hasVariable('name') )
$value = $http->variable ('name');
if( $value != '' )
$statusMessage = 'Name: '. $value;
else
$statusMessage = 'Please insert data';
// initialize Templateobject
$tpl = eZTemplate::factory(); // From eZPublish 4.3. For previous versions, use templateInit()
function instead
$tpl->setVariable( 'status_message', $statusMessage );
// Write variable $statusMessage in the file eZ Debug Output / Log
// here the 4 different types: Notice, Debug, Warning, Error
eZDebug::writeNotice( $statusMessage, 'jacextension:modul1/list.php' );
eZDebug::writeDebug( $statusMessage, 'jacextension:modul1/list.php' );
eZDebug::writeWarning( $statusMessage, 'jacextension:modul1/list.php' );
eZDebug::writeError( $statusMessage, 'jacextension:modul1/list.php' );
// $statusMessage write own Log file to ezroot/var/log/jacextension_modul1.log
eZLog::write ( $statusMessage, 'jacextension_modul1.log' );
$Result = array();
// search/replace template and save result for $module_result.content
$Result['content'] = $tpl->fetch( 'design:modul1/create.tpl' );
// generate route Modul1/create
$Result['path'] = array( array( 'url' => 'modul1/list',
'text' => 'Modul1'),
array( 'url' => false,
'text' => 'create' ) );
?>
例 13. GET/POST 値の表示、および、Debug メッセージの出力の実現: jacextension/module/modul1/create.php
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
16. データベースへのアクセス
さて、データベースに戻りましょう。新しく作った jacextension_data テーブルにフォームの値を保存
してみます。そのために必要なクラスは eZPersistentObject です。このクラスはデータの作成、変更、
削除や抽出といった機能を持っています。
これらの機能を使うに、まずは JACExtensionData というクラスを new して作りましょう。このクラ
スは jacextensiondata.php という名前で<ezroot>/extension/jacextension/classes に保存します。
<?php
class JACExtensionData extends eZPersistentObject
{
/**
* Constructor
*
* @param array $row Hash of attributes for new JacExtensionData object
*/
public function __construct( array $row )
{
parent::eZPersistentObject( $row );
}
/*
* Definition of the data object structure /of the structure of the database table
*
* @return array Hash with table definition for this persistent object
*/
public static function definition()
{
return array( 'fields' => array( 'id' => array( 'name' => 'ID',
'datatype' => 'integer',
'default' => 0,
'required' => true ),
'user_id' => array( 'name' => 'UserID',
'datatype' => 'integer',
'default' => 0,
'required' => true ),
'created' => array( 'name' => 'Created',
'datatype' => 'integer',
'default' => 0,
'required' => true ),
'value' => array( 'name' => 'Value',
'datatype' => 'string',
'default' => '',
'required' => true )
),
'keys'=> array( 'id' ),
'function_attributes' => array( 'user_object' => 'getUserObject' ), //
accessing to attribute "user_object" will trigger getUserObject() method
'increment_key' => 'id',
'class_name' => 'JACExtensionData',
'name' => 'jacextension_data'
);
}
/**
* Help function will open in attribute function
* @param bool $asObject
*/
public function getUserObject( $asObject = true )
{
$userID = $this->attribute('user_id');
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
17. $user = eZUser::fetch($userID, $asObject);
return $user;
}
/**
* Creates a new object of type JACExtensionData and shows it
* @param int $user_id
* @param string $value
* @return JACExtensionData
*/
public static function create( $user_id, $value )
{
$row = array( 'id' => null,
'user_id' => $user_id,
'value' => $value,
'created' => time() );
return new self( $row );
}
/**
* Shows the data as JACExtensionData with given id
* @param int $id User ID
* @param bool $asObject
* @return JACExtensionData
*/
public static function fetchByID( $id , $asObject = true)
{
$result = eZPersistentObject::fetchObject(
self::definition(),
null,
array( 'id' => $id ),
$asObject,
null,
null );
if ( $result instanceof JACExtensionData )
return $result;
else
return false;
}
/**
* Shows all the objects JACExtensionData as object or array
* @param int $asObject
* @return array( JACExtensionData )
*/
public static function fetchList( $asObject = true )
{
$result = eZPersistentObject::fetchObjectList(
self::definition(),
null,null,null,null,
$asObject,
false,null );
return $result;
}
/**
* Shows the amount of data
* @return int
*/
public static function getListCount()
{
$db = eZDB::instance();
$query = 'SELECT COUNT(id) AS count FROM jacextension_data';
$rows = $db -> arrayQuery( $query );
return $rows[0]['count'];
}
// -- member variables--
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
18. protected $ID;
protected $UserID;
protected $Created;
protected $Value;
}
?>
例 14. eZ PersistentObject によるデータベースアクセスの例: jacextension/classes/jacextensiondata.php
特に重要なメソッドは JACExtensionData::definition()です。このメソッドは JACExtensionData のオ
ブジェクト構造を定義し、データが保存されるテーブル/カラムの仕様を特定します。
次に create(), fetchByID(), fetchList(), getListCount()という静的メソッドを作成します。データが表示に
ついては3つのタイプがあります。
1. eZPersistentObject::fetchObject()
2. eZPersistentObject::fetchObjectList()
3. direct SQL command
可能な限り、eZPersistentObject の fetch メソッドを利用しましょう。eZ Publish が対応しているデー
タベース上での SQL は動作しますが、 特定のデータベース依存な SQL を利用すべきではないでしょう。
(より詳細は関連 API ドキュメントの
http://pubsvn.ez.no/doxygen/4.4/html/classeZPersistentObject.html を参照してください)
この新しいクラスを利用する前に、autoloads 配列を再発行する必要があります。このオペレーション
により eZ Publish がシステム上で必要な PHP クラスを見つけることができるようになります。
cd /path/to/ezpublish/root
php bin/php/ezpgenerateautoloads.php -e -p
これで create.php の新しい機能を使うことができます。新規データ保存を行うにあたりメソッド
JACExtensionData::create( $value )により JACExtensionData 型の新規オブジェクトを作成できます。
メソッド create()はフォームに入力された値とユーザーID、そして入力した時刻を作成します。
メソッド store()により、jacextension_data テーブルにデータが保存されます。この時生じていること
は Debug View で知ることができます。create.php は下記のようになります。
<?php
// modul1/create.php – Function file of View create
// ...
$value = '';
// If the variable 'name' is sent by GET or POST, show variable
if( $http->hasVariable('name') )
$value = $http->variable('name');
if( $value != '' )
{
// ask for the ID of current user
$userId = eZUser::currentUserID();
// generate new data object
$JacDataObject = JACExtensionData::create( $userId, $value );
eZDebug::writeDebug( '1.'.print_r( $JacDataObject, true ),
'JacDataObject before saving: ID not set' ) ;
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
19. // save object in database
$JacDataObject->store();
eZDebug::writeDebug( '2.'.print_r( $JacDataObject, true ),
'JacDataObject after saving: ID set' ) ;
// ask for the ID of the new created object
$id = $JacDataObject->attribute( 'id' );
// ask for the login of the user who has created the data
$userObject = $JacDataObject->attribute( 'user_object' );
$userName = $userObject->attribute( 'login' );
// show again the data
$dataObject = JACExtensionData::fetchByID( $id );
eZDebug::writeDebug( '3.'.print_r( $dataObject, true ),
'JacDataObject shown with function fetchByID()');
// investigate the amount of data existing
$count = JACExtensionData::getListCount();
$statusMessage = 'Name: >>'. $value .
'<< of the user >>'. $userName.
'<< In database with ID >>'. $id.
'<< saved!New ammount = '. $count ;
}
else
{
$statusMessage = 'Please enter data';
}
// take data as object and as array and show in Output Debug
$ObjectArray = JACExtensionData::fetchList( true );
eZDebug::writeDebug( '4. JacDataObjects: '.print_r( $ObjectArray, true ),
'fetchList( $asObject = true )' );
$array = JACExtensionData::fetchList( false );
eZDebug::writeDebug( '5. JacDataArrays: '.print_r( $array, true ),
'fetchList( $asObject = false )' );
// initialize Templateobject
$tpl = eZTemplate::factory();
$tpl->setVariable( 'status_message', $statusMessage );
//...
?>
例 15. データベースへの新規書き込みと、そのデータを違ったやり方で表示しています。:
jacextension/modules/modul1/create.php
eZPersistentObject 型のオブジェクトにアクセスするには、 $JacDataObject- >attribute('id')を使います。
パラメータ「id」はテーブルの id カラムに適合しており、その他の値についてアクセスについて深く考
える必要はありません。このことは eZ Publish に保存されるすべてのデータについていえることです。
(例えば、eZContentObject や eZUser といったオブジェクトも同様)
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
25. INI ファイル
最後に extension/jacextension/settings/jacextension.ini.というオリジナルの設定ファイルを作りましょ
う。この設定はテンプレートやモジュールについて必要な設定値であり、他の eZ Publish インストール
において変更されることもあるでしょう。
デフォルトの.ini は jacextension.ini.append.php に上書きされます。例 22 では.ini ファイルの例を、例
23 では list.php を変更して PHP から.ini ファイルにアクセスするコードを書いています。
[JACExtensionSettings]
# Should Debug enabled / disabled
JacDebug=enabled
例 22. jacextension のコンフィグファイル - extension/jacextension/settings/jacextension.ini
<?php
// ...
// read variable JacDebug of INI block [JACExtensionSettings]
// of INI file jacextension.ini
$jacextensionINI = eZINI::instance( 'jacextension.ini' );
$jacDebug = $jacextensionINI->variable( 'JACExtensionSettings','JacDebug' );
// If Debug is activated do something
if( $jacDebug === 'enabled' )
echo 'jacextension.ini: [JACExtensionSetting] JacDebug=enabled';
// ...
?>
例 23. jacextension.ini へのアクセス - extension/jacextension/modules/modul1/list.php
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)
26. 最後に
この簡単なサンプルにより、 Publish extension の作成についてのテクニックをいくつか学びました。
eZ
オリジナルのビューやビューパラメータ、テンプレート・フェッチ機能やテンプレート・オペレータを
カスタムモジュールで実現することに加え、eZ Publish の権限管理システムについてふれ、また、デバ
ッグビューやログファイルにカスタムメッセージを表示するやり方も扱いました。そして ini ファイル
へのアクセスについても。
これらの基本的な知識を利用して、きっと eZ Publish extension の作成が可能になったかと思います。
このチュートリアルで作ったサンプルコードは http://projects.ez.no/jacextension からダウンロードする
ことができます。
Resources
http://www.ezpublish.de/ – German eZ community
http://share.ez.no - International eZ community
http://pubsvn.ez.no/doxygen – eZ API documentation
http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference – eZ reference documentation
http://projects.ez.no/jac_dokumentation_in_german_ez_publish_basics_extension_development
– PDF eZ publish basics in programming modules (in German)
http://projects.ez.no/index.php/jac_tutorial_ger_de_ez_publish_extension_entwicklung
- This tutorial in German (not refreshed to be 4.4 compliant yet)
http://projects.ez.no/index.php/jac_tutorial_esl_es_desarrollo_de_extensiones_en_ez_publish
- This tutorial in Spanish (not refreshed to be 4.4 compliant yet)
http://projects.ez.no/jacextension - Source code for the tutorial
eZ
Publish の extension 開発
チュートリアル
(原著:
An
Introduction
to
Developing
eZ
Publish
Extensions)