Recent changes
Wednesday November 04 2026
-
Module 7: Extensions Updated Markdown page
The seventh module of the Developers course. Learners map the anatomy of an extension, give theirs metadata and a license, regenerate autoloads and activate extensions, declare dependencies for the loading order, and…
-
Lesson 7.5: A template operator Updated Markdown page
Learners write the operator mysite_initials with an optional parameter, register it in autoloads/eztemplateautoload.php and ExtensionAutoloadPath, and use it in a template. 55 minutes.
-
Lesson 7.3: Autoloads and activation Updated Markdown page
Learners regenerate the extension autoload array after adding classes, switch extensions on for the whole installation or one siteaccess, use Setup > Extensions with Review changes, and recover from a class that is not…
-
Lesson 7.2: extension.xml, ezinfo.php and a license Updated Markdown page
Learners give their extension its identity: ezinfo.php and extension.xml with name, version, copyright, license and website that agree, a LICENSE file, and a check on the About page. 45 minutes.
-
Lesson 7.4: Loading order and dependencies Updated Markdown page
Learners see why the order of active extensions decides which settings and templates win, declare extends, requires and uses in extension.xml, switch on ExtensionOrdering, and read the real loading position on the…
-
Lesson 7.1: The anatomy of an extension Updated Markdown page
Learners map every folder of a real extension to the extension point it serves, compare a small, a medium and a settings-only extension, and review what their own mysite_hello holds after six modules. 40 minutes.
-
Module 8: Settings and siteaccesses Updated Markdown page
The eighth module of the Developers course. Learners follow how INI files are read and merged, place settings in the right scope for a siteaccess, change and move settings safely with exp:ini, and give their extension…
-
Lesson 8.3: Changing settings with exp:ini Updated Markdown page
Learners use the actions of exp:ini (get, set, add, rem, clear, toggle, copy, move), preview every change with --dry-run, find the backup, read exit codes, and move a block of settings from the global override into…
-
Lesson 8.1: How settings are read Updated Markdown page
Learners read the format of .ini and .ini.append.php files, follow the order in which eZINI reads the scopes, explain arrays, resets and hashes, and trace any value to its file with exp:ini where and the settings page…
-
Lesson 8.4: Settings of your own Updated Markdown page
Learners give their extension its own INI file with documented defaults, read it in PHP with eZINI and in templates with ezini, override it from the installation's global override, and handle missing settings safely. 45…
-
Lesson 8.2: Siteaccess settings Updated Markdown page
Learners see a siteaccess from a developer's side, list the siteaccesses and how requests are matched to them, compare settings between two siteaccesses, and decide whether a setting belongs in the global override, a…
-
Module 9: The console and persistent objects Updated Markdown page
The ninth module of the Developers course. Learners find and run commands with the console, write a command of their own, keep their extension's data in a table through eZPersistentObject, write the SQL that remains…
-
Lesson 9.2: A command of your own Updated Markdown page
Learners write a command line script in their extension with eZScript, options and help, describe it with @description, run it through the console as ext:mysite_hello:latest, and return exit codes that other scripts can…
-
Lesson 9.5: Migrations Updated Markdown page
Learners ship a database change as a migration - generate a skeleton, write plan(), up() and down() for a table, check the file without a database, read the dry run, simulate on SQLite, run it without a commit and take…
-
Lesson 9.3: Persistent objects Updated Markdown page
Learners create a table for their extension, describe it with an eZPersistentObject definition, and store, fetch, count, change and remove rows without writing SQL for each operation. 60 minutes.
-
Lesson 9.4: SQL safely with eZDB Updated Markdown page
Learners write the queries persistent objects cannot express with eZDB, escape every string and cast every number, page results with arrayQuery, group writes in transactions, and recognize the dialect and engine…
-
Lesson 9.1: The console Updated Markdown page
Learners find any command with php bin/php/console list, read its help, understand the exp, shell, bin, ext and cron namespaces, and run cronjob parts through the console. 35 minutes.
-
Module 10: Workflows, events and cronjobs Updated Markdown page
The tenth module of the Developers course. Learners follow workflows, triggers and waiting processes, write a workflow event type that logs publishing, and write a cronjob part that cleans up their extension's table. 2…
-
Lesson 10.3: A cronjob part Updated Markdown page
Learners write a cronjob script in their extension, add it to a part of its own in cronjob.ini, run it with runcronjobs.php and through the console as cron:<part>, and find it on Setup > Cronjobs. 45 minutes.
-
Lesson 10.2: A workflow event type of your own Updated Markdown page
Learners write the event type Log publishing in their extension, register it in workflow.ini, add its edit and view templates, put it in a workflow on the after-publish trigger, and read the log line it writes. 60…