Wednesday 29 July 2009 2:33:09 am - 11 replies

» Read full tutorial

Introduction

Most Content Management System requirements can be fulfilled by eZ Publish without any custom PHP coding. But sooner or later experienced eZ Publish implementers get to the point where a project needs some special functionality and it becomes necessary to develop extensions.

(This tutorial was initially published on 21/01/2008, and refreshed to match the 4.x series on 10/12/2010)

Author Message

Dan Parchman

Thursday 31 December 2009 12:11:29 pm

The code on page 8 which reads:
-----------------------------------------------

class JACExtensionData extends eZPersistentObject
{
/*!
Konstruktor
*/
function JACExtensionData( $row )
{
$this->eZPersistentObject( $row );
}

/*!
Definition of the data object structure /of the structure of the database table
*/
function definition()
---------------------------------------------

In eZ Publish 4.x should be:
-------------------------------------------

class JACExtensionData extends eZPersistentObject
{
/*!
Konstruktor
*/
function JACExtensionData( $row )
{
$this->eZPersistentObject( $row );
}

/*!
Definition of the data object structure /of the structure of the database table
*/
static function definition()
------------------------------------------------

Then it works!

Dan Parchman

Thursday 31 December 2009 1:41:35 pm

After adding the new function_definition.php file (page 9 - Template Fetch Functions) update the extension auto-load array by clicking the "Regenerate autoload arrays for extensions" button in the Admin panel Settings -> Extensions.

Sendo Lat

Thursday 25 February 2010 11:42:16 pm

Thanks for this information.

BTW, if you have interest in these topics,
loan problems, how to lose weight fast?
which is the best travel agency? and baby care problems?

Welcome to my blog.

Ivan Švogor

Wednesday 29 September 2010 9:45:14 am

After clearing all the cache I still get the message:

No template could be loaded for "modul1/list.tpl" using resource "design"

please help :)

Gaetano Giunta

Friday 22 October 2010 4:15:37 am

For an extension that adds one or more tables to the db, it is important to create a share/db_schema.dba file where these new tables are described.

This way when the admin goes to the "Setup/Upgrade Check/Check db consistency" page

- he will note get a suggestion to drop the table

- he will get a suggestion with the sql command to create the table if the table does not exist

This is true since eZP 4.3

The format for db_schema.dba is propietary to eZ. You can find examples in ezfind, ezflow and other extensions from eZ Systems

To generate that file you can use the ezsqldumpschema.php script. Take care: right now it will create a file with the definition of the whole db, so you should either use it in a db where you only have your new table(s) or clean up by hand the generated .dba file

Principal Consultant International Business
Member of the Community Project Board

Leo Mik

Tuesday 26 October 2010 4:16:27 am

Hey Gaetano, thanks for help!

André R.

Wednesday 15 December 2010 12:26:48 pm

To really be a mirror for best practice, then code examples should add phpdoc and use php5 features like __construct and so on, eg:

/**
 * JACExtensionData does....
 */
class JACExtensionData extends eZPersistentObject
{
   /**
    * Constructor
    *
    * @param array $row Hash of attributes for new <span class="Apple-style-span" style="font-size: 13px; " mce_fixed="1">JACExtensionData</span> <span class="Apple-style-span" style="font-size: 13px; " mce_fixed="1"><span>object</span></span>
    */ 
    function __construct( $row )
    {
        parent::__construct( $row );
    }

   /**
    * Definition of the data object structure /of the structure of the database table
    *
    * @return array Hashed array with table definition of this p<span class="Apple-style-span" style="font-size: 13px; " mce_fixed="1">ersistent object</span>
    */ 
    static function definition()

Additionally, member variables should probably be protected/private to make sure attribute() function is used outside the class.

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Jérôme Vieilledent

Wednesday 22 December 2010 10:14:40 pm

Thanks André. I just fixed this.

Mauricio Sánchez

Friday 11 February 2011 12:29:32 pm

Hi Guys!

Is there a way to create a custom locale file (eng-US@custom.ini) inside an extension?

Any help will be appreciated!

Eirik Alfstad Johansen

Friday 01 July 2011 1:38:57 am

I thought best practice was to put operators in a separate /operators folder. Is that not the case anymore? Or am I simply mistaken?

Sincerely,

Eirik Alfstad Johansen
http://www.netmaking.no/

Nicolas Pastorino

Friday 01 July 2011 8:41:36 am

"

I thought best practice was to put operators in a separate /operators folder. Is that not the case anymore? Or am I simply mistaken?

"

Template operators ? Placing them in the 'autoloads' directory, at the root of the given extension directory, is the usual practice.

Cheers,

--
Nicolas Pastorino
Director Community - eZ
Member of the Community Project Board

eZ Publish Community on twitter: http://twitter.com/ezcommunity

t : http://twitter.com/jeanvoye
G+ : http://plus.tl/jeanvoye

You must be logged in to post messages in this topic!

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 17 2025 20:58:48
Script start
Timing: Jan 17 2025 20:58:48
Module start 'layout'
Timing: Jan 17 2025 20:58:48
Module start 'content'
Timing: Jan 17 2025 20:58:48
Module end 'content'
Timing: Jan 17 2025 20:58:48
Script end

Main resources:

Total runtime0.2277 sec
Peak memory usage6,144.0000 KB
Database Queries111

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0045 596.4766152.1406
Module start 'layout' 0.00450.0028 748.617239.5000
Module start 'content' 0.00720.2190 788.11721,206.0469
Module end 'content' 0.22630.0013 1,994.164130.4766
Script end 0.2276  2,024.6406 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00331.4516160.0002
Check MTime0.00140.6145160.0001
Mysql Total
Database connection0.00070.316310.0007
Mysqli_queries0.132258.08351110.0012
Looping result0.00110.46731090.0000
Template Total0.201388.420.1007
Template load0.00220.964520.0011
Template processing0.199187.456720.0995
Template load and register function0.00010.064610.0001
states
state_id_array0.00090.408920.0005
state_identifier_array0.00100.452030.0003
Override
Cache load0.00210.9241900.0000
Sytem overhead
Fetch class attribute name0.00120.5244170.0001
Fetch class attribute can translate value0.00090.4127100.0001
class_abstraction
Instantiating content class attribute0.00000.0097170.0000
XML
Image XML parsing0.00381.6497100.0004
General
dbfile0.00220.9502420.0001
String conversion0.00000.003540.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplforum_topic/full.tplextension/community_design/design/suncana/override/templates/forum_topic/full.tplEdit templateOverride template
12content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
20content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
1content/datatype/view/ezxmltags/emphasize.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/emphasize.tplEdit templateOverride template
6content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
2content/datatype/view/ezxmltags/link.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/link.tplEdit templateOverride template
2content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
5content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1content/datatype/view/ezxmltags/quote.tpldatatype/ezxmltext/quote.tplextension/ezwebin/design/ezwebin/override/templates/datatype/ezxmltext/quote.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 51
 Number of unique templates used: 10

Time used to render debug report: 0.0001 secs