Learning: Developers

This article will give you an overview of the different possibilities for adding new functionality into eZ Publish.

Along with questions from the new-developer perspective trying to understand where to implement eZ Publish extension functionality to reach 'n' varying custom eZ Publish programming goals.


Before you start to program, you should read the debugging tips. You'll have to learn how to adjust your site's configuration settings to make it easier to debug your new code and to track errors.


Create segmented functionality and avoid future upgrade conflicts by implementing your solutions as an extension instead of changing base eZ Publish files (core/kernel).


Creating a new setting, types of settings, settings overrides, settings security and dynamic settings creation via php.


Making eZ Publish secure, issues, experiences and footnotes.


What are plugins? Give example of an eZ Publish plugin.

Login handlers

A login handler handles authentication of a user. The login handler is provided with a login id and a password, and returns a valid eZ Publish user for the system to use. This information can be used to authenticate against an external system.

Single Sign On handlers

An SSO handler is useful if you want to validate based on some other property of the user than login id/password, such as referring URL or client IP address. Or to support SSO; for example, if the session has some sort of token from an SSO server.


A datatype is the smallest possible entity of storage. It determines how a specific type of information should be validated, stored, retrieved, formatted and so on. eZ Publish comes with a collection of fundamental datatypes that can be used to build powerful and complex content structures.

In addition, it is possible to extend the system by creating custom datatypes for special needs. Custom datatypes have to be programmed in PHP. However, the built in datatypes are usually sufficient enough for typical scenarios. The following table gives an overview of the most basic datatypes that come with eZ Publish.

Workflow event types

What is a workflow event type? Give examples of when to create a workflow event.

Content action handlers

What is a content action handler? With a content action handler you can extend the content/action view.

Content edit handlers

What is a content edit handler? With a content edit handler you can extend the content/edit view.

Search engines

With the Lucene search plugin or other eZ search plugin you can customize and extend searching in eZ Publish completely!

Extended attribute filters

Extended attribute filters are used in combination with template fetch functions and applies custom filters...


eZ Publish uses designs as the basis of storing design related resources including templates, javascript, stylesheets, images, and siteroot files.


eZ Publish uses templates as the basis of website design. Templates plug directly into eZ Publish and are programed in eZ Template language (also known as tpl, eztpl). Templates represent the display formating, templating and internationalization layer of eZ Publish.

While simply elegant to use templates are a very powerful tool comprised of even more powerful tools and information. eZ Publish templates come with a large number of built in template features. This allows functionality to be implemented very quickly and simply. While larger templates may benefit in reduced performance load in implementing some functionality as a custom extension.

Template operators

Template operators plug into the Template system in eZ Publish and are programmed in PHP. Template Operators can take input, transform it, and return a result to the template. eZ Publish comes with a lot of built in template operators.

Template functions

Template functions are built in language constructs, functions which provide features within the template language.


When to use notifications?

Notification events

When to use notification events?

Notification handlers

When are notification handlers a way to implement what functionality, wait, what are notification handlers?

Collaboration handlers

What is a collaboration handler?

Image converters

What is an image converter? Which converters are available?

Image analyzers

What is an image analyzer?

Metadata extractors

What is a metadata extractor?

RSS import maps

See the feature doc.


What is a module, why not to confuse modules and extensions, when are modules needed. Did you know that the eZ Publish kernel is comprised of modules? Did you know you can use these as a reference for your own development?


When to write a script and what type? If you need automated execution you would write a cronjob, while if you only supported manual execution you would write a command line script.


Cronjobs are useful for periodic tasks like updating content, sending emails (notification) and so on. But they are also useful for tasks that have a long runtime which you want to make sure that the execution timeout does not affect the script. Cronjobs can not have parameters.

Command line scripts

A command line script is a php script which can have parameters


The eZ Publish kernel is a large set of subsystems. At times one needs to use intimidate knowledge of eZ Publish internals (kernel) to archive certain specific functionality. It is generally _not_ recommended to change the kernel or stock eZ Publish core, because upgrades will be much harder.

API code samples

The code samples will help you getting started with some commonly used parts of the eZ Publish API. They can be really useful in your custom modules, scripts and cronjobs.


Solutions to a common need to extend eZ Publish in similar ways. These solutions can be minimal / direct or longer articles with source code examples.