Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Tutorials: build real extensions step by step

Step-by-step tutorials that build real small extensions, first with the RAD wizards of Setup > RAD, then by hand, ending with a complete extension from idea to release. Every file shown was checked with php -l and run.

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/extension-development/part-3-extension-developer/tutorials/README.md

On this page

Tutorials: build real extensions step by step

These tutorials belong to Part 3 of the book. Each one builds a small, working extension and shows every file in full, the commands to switch it on, and what you should see. The PHP files were checked with php -l and, where it is safe, run with the kernel loaded; the template samples were rendered by the template engine.

Two ways to the same result

With the RAD toolsBy hand
WhereSetup > RAD (/setup/rad) in the administrationyour editor and a terminal
Speeda working skeleton in minutesminutes for small things, longer for big ones
What you learnwhich files and settings a mechanism needswhy each line is there
Best forstarting something new; checking you did not forget a settingsmall changes; understanding; working without the admin

Do one of each for the same mechanism and compare the files: that is the fastest way to learn the anatomy.

With RAD

TutorialBuilds
The RAD tools tourthe catalogue, the survey, the health check, and how every wizard works
A template operator in five minutesoperators, functions, fetch functions and fetch aliases
A datatypea new kind of field with its templates
A module with viewsa module with views and policies, or a module over existing tables
A workflow eventa workflow event type with its templates
A design extensiona theme skeleton with pagelayout, override and stylesheets
A settings-only extensionsettings, listeners and siteaccess customizations
Handlers and kernel overridesa handler named by a setting, and the last resort

By hand

TutorialBuilds
The smallest extension in five minutesmetadata and settings, nothing else
A template operatormysite_greet and mysite_initials
A fetch functionfetch( 'hello', 'newest', ... )
A module with a view/hello/world/<name>
A module protected by a policyan admin page only some roles may open
A datatypea rating from 1 to 5
A workflow eventa log line for every publication
A cronjob parta nightly digest
Your own table with eZPersistentObjecta greetings table with its class
An ezjscore server functionan ajax call answered in JSON
A rich text custom taga tag editors can use in rich text
Translating an extensionGerman texts for everything above
Help pages for your extensionpages and context help in the help center
A PHPUnit testtests that run without a database

Capstone

A complete extension from idea to release puts the pieces together and publishes the result, following Part 7.

What you need

A development installation with debug output on (Setting up a development installation), and for the RAD tutorials an administrator with the setup/setup policy. All tutorials use the extension name mysite_hello; pick your own prefix for real work.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x