Forums / Discussions / An Introduction to Developing eZ Publish Extensions
Wednesday 29 July 2009 2:33:09 am - 11 replies
» Read full tutorial
Most Content Management System requirements can be fulfilled by Exponential without any custom PHP coding. But sooner or later experienced Exponential 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)
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 Exponential 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!
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
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!