Recent changes
Wednesday November 04 2026
-
Lesson 6.1: How modules and views work Updated Markdown page
Learners read a module.php, map an address to its module, view, ordered and unordered parameters, follow a view to its script or class, and see how the result reaches the pagelayout. 45 minutes.
-
Lesson 6.3: Policies for your views Updated Markdown page
Learners declare a policy function in their module, tie the greet view to it, grant it to the Anonymous role in Users > Roles and policies, and check the result with has_access_to; exp:accesscheck explains content…
-
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…