Skip to the content
Documentation

Help center

Help for Developers

Build on it: extensions, templates, settings, the APIs, the command line and upgrades.

6085 pages

Start here

Read these pages in this order.

  1. Mit Git entwickeln: vom Benutzer zum Entwickler Der empfohlene Weg, Websites mit Exponential zu bauen. Installieren Sie den Kernel und jede se7enxweb-Erwei...
  2. Erweiterungsentwicklung: das Buch (hier beginnen) Ein vollständiges Buch über den Weg vom Benutzer zum Builder, Erweiterungsentwickler und Theme-Entwickler m...
  3. Benutzerverwaltung von der Konsole Der Anfang von allem rund um die Befehle exp:user in Exponential 6.0.15 - Benutzerkonten auflisten, anlegen...
  4. Das Exponential-Projekt: Hier beginnen Eine Übersicht über das Exponential-Projekt, wie seine Website exponential.earth es darstellt, übertragen a...
  5. Eine Datenbanktabelle anlegen Eine Migration, die eine eigene Tabelle der Site auf jeder Engine aus einer Definition im Format von share/...
  6. Integratoren: hier beginnen Die Einstiegsseite für Systemintegratoren und Integrationsentwickler, die Exponential mit CRM, ERP, PIM, DA...

Good to know

  • Migrationen

    Der Anfang von allem rund um Migrationen in Exponential 6.0.15 - Schema- und Inhaltsänderungen, einmal als Dateien unter Versionskontrolle geschrieben und auf jede Installation einer Site in derselben Reihenfolge…

  • Migrationen: eine erste PHP-Migration, Schritt für Schritt

    In diesem Tutorial schreiben Sie zwei PHP-Migrationen für eine Site: Die eine legt eine Tabelle exp_news_note mit einer ersten Zeile an, die andere veröffentlicht einen Ordner „News“ unter der Inhaltswurzel und vermerkt…

  • Eine Datenbanktabelle anlegen

    Eine Migration, die eine eigene Tabelle der Site auf jeder Engine aus einer Definition im Format von share/db_schema.dba anlegt, eine erste Zeile schreibt und sie in down() wieder löscht - mit Probelauf, Lauf, Prüfung…

  • Migrationen testen: Prüfung, Simulation, Diff und CI

    Vier Ebenen von Tests für Migrationen - die Prüfung ohne Datenbank, der Probelauf, die Simulation mit Diff auf PostgreSQL oder SQLite und ein PHPUnit-Test auf einer Wegwerf-SQLite-Datenbank - und wie man sie in der CI…

  • Mit Migrationen ausliefern: CI/CD und GitHub Actions

    Migrationen bei jeder Auslieferung ausführen - die Reihenfolge der Schritte, ein vollständiger GitHub-Actions-Workflow, der Pull Requests prüft und über SSH ausliefert, die Exit-Codes, auf die eine Pipeline reagiert…

  • Teamarbeit mit Git: Branches, Konflikte und Reihenfolge

    Wie mehrere Entwicklerinnen und Entwickler Migrationen auf Branches schreiben, ohne sich in die Quere zu kommen - Zeitstempel und Reihenfolge, requires für echte Abhängigkeiten, zwei Migrationen mit demselben…

Search by topic

Each button lists the pages of one topic for Developers.

What changed in the source code most recently: the main branch of se7enxweb/exponential, read from its public feed by this server.

Show merge commits too

  1. Updated: Setup > Log files finds the logs when var is a link to anoth… (opens in a new window) ·
    Message
    Updated: Setup > Log files finds the logs when var is a link to another volume
    
    An installation whose var directory is a symbolic link to another volume
    (var -> ../../arc/state/var) showed no log at all: the log viewer follows
    no link out of the installation, and every log directory resolved outside
    it. The installation's own var directory now counts as inside, and its
    directories keep their var/... ids, so permalinks stay the same; any other
    link out of the installation is still never followed.
    
    Tests: expLogViewerSymlinkedRootTest LV-SYM-04 (var linked to another
    volume: var/log found and resolved; a link out of that var still left out).
    89baadf6be
  2. Added: CompatWordSeparator, dashes for the old-style lowercase url al… (opens in a new window) ·
    Message
    Added: CompatWordSeparator, dashes for the old-style lowercase url aliases
    
    TransformationGroup=urlalias_compat gives lowercase url aliases with
    underscores, and a site that wanted them with dashes had to override
    eZCharTransform with a copy of the kernel class (an extension such as
    bcurlaliaswithdash did), which an upgrade then runs into. site.ini
    [URLTranslator] CompatWordSeparator now chooses the separator of
    url_cleanup_compat: underscore (the default, aliases as before) or dash.
    
    Tests: eZCharTransformCompatWordSeparatorTest (underscore by default and as
    shipped, dash with both ends trimmed, missing or unknown means underscore).
    2fa6253804
  3. Updated: The upgrade creates every kernel table a database lacks, exp… (opens in a new window) ·
    Message
    Updated: The upgrade creates every kernel table a database lacks, expuser_session_info among them
    
    The database stage named only the tables of the 6.0.x steps. A database
    upgraded across many releases can lack an older kernel table it never got:
    a site upgraded from 6.0.4 had no ezapprove_items (its approve workflow
    event had never run), and the account approval step of the scripts stage
    then failed on the first user created. 6.0.15-user-session-table created
    expuser_session but not expuser_session_info, so "Your devices" stayed
    without its table after an upgrade.
    
    New step 6.0.15-kernel-tables: every table of the kernel schema
    (share/db_schema.dba) the database lacks is created, empty, with its
    indexes; it runs in the database stage, before the scripts stage that
    relies on the tables. 6.0.15-user-session-table now names
    expuser_session_info too, so databases where the step already counted as
    done get the table.
    
    Tests: expUpgradeKernelTablesTest on SQLite (registered before the
    scripts, names every kernel table, a database missing ezapprove_items gets
    it, a second run does nothing). Docs: the step table of the console
    upgrade guide, English and German.
    ce34c4cb52
  4. Updated: admin4l asks Exponential Layouts for an admin layout only wh… (opens in a new window) ·
    Message
    Updated: admin4l asks Exponential Layouts for an admin layout only where Layouts is active
    
    On an installation without the explayouts extension every admin page logged
    "Missing function definition file for module: explayouts" and "Cannot
    execute function 'admin_layouts_enabled' in module 'explayouts'", and the
    template compiler, which resolves a fetch with a literal module name when it
    compiles, logged "Cannot execute module 'explayouts', no module found" each
    time the page layout compiled. Seen on edit.exponential.earth and on a site
    upgraded from 6.0.4.
    
    The admin layout lookup now runs only when explayouts is an active
    extension, and names the module through a variable, so the fetch is only
    resolved when it runs. With Layouts active nothing changes.
    
    Tests: Admin4lReviewTest reads the switch through the guarded fetch and
    checks that no fetch names explayouts literally and that all three fetches
    sit inside the active-extension check.
    9716d88bcd
  5. Updated: The hosting help no longer asks for absolute request shield … (opens in a new window) ·
    Message
    Updated: The hosting help no longer asks for absolute request shield paths
    
    A site whose administration has a host of its own does not need absolute paths for
    the request shield's store and log: relative paths, relative to the rule file,
    work with a site block too. What looked like it was the include order, which the
    page describes: exponential.rules sets a store and a log of its own, so the site's
    settings come after it.
    0667ae6f41
  6. Updated: The request shield pages describe exp_request_shield 0.0.1.1 (opens in a new window) ·
    Message
    Updated: The request shield pages describe exp_request_shield 0.0.1.1
    
    The pages name the current release, 0.0.1.1 (the default installation's
    constraint ~0.0.1.0 allows it), and the government and hosting help pages, in
    English and German, say what its default rules add: every administration
    reached by a path (/admin, /adminui, /editor and the older admin designs)
    keeps its system URLs, modules and forms, the shield's own JSON API stays off,
    and an administration on a host of its own is set up with the include order
    of the extension's configuration guide.
    15472fe0bd
  7. Updated: The pages a visitor sees before signing in look like the sig… (opens in a new window) ·
    Message
    Updated: The pages a visitor sees before signing in look like the sign-in page in every admin design
    
    A partner reported the forgot-password page of the administration as broken.
    No admin design had a template for it, so it was drawn with the plain base
    template: a bare form with browser-default fields, the warning above the
    title, no way back to the sign-in. The other pages an anonymous visitor
    reaches there had the same kind of gaps.
    
    - admin4 (admin, editor, admin4l): user/forgotpassword has a template of its
      own with the sign-in page's title, fields, button and notices (a green one
      for "mail sent" and "password generated") and a link back to the sign-in;
      user/success shows the account state the kernel passes instead of always
      "Your account was successfully created", and user/success and
      user/activate use the same look. The sign-in rules of admin4.css cover the
      e-mail field and the button classes these pages use; tokens only.
    - admin (classic): user/forgotpassword, user/success and user/activate on the
      white card the register page uses, the sign-in page links "Forgot your
      password?", and the text, links and footer on the dark frame reach 5.6:1.
    
    Field names, actions and buttons are unchanged, so the forms post as before.
    Checked anonymously in every admin siteaccess, light and dark, at 1440 and
    960 pixels: every view answers 200, with no overflow, no text below 4.5:1 and
    no console errors.
    b3233f336b
  8. Updated: System information finds the cronjob runs that runcronjobs.p… (opens in a new window) ·
    Message
    Updated: System information finds the cronjob runs that runcronjobs.php records
    
    The health check "No cronjob run was found" looked for runs started from
    Setup > Cronjobs and for non-empty cronjob*.log files only. A crontab line
    that runs quietly (-q) or writes its output elsewhere leaves neither, so the
    check warned on installations whose cronjobs run every few minutes. It now
    also reads the run record runcronjobs.php keeps for every part it starts
    (var/log/cronjob-lastrun.json, expCrontabSetup::lastRuns()).
    86dcc921dc
  9. Updated: Setup > Log files finds the logs of a host served from a fol… (opens in a new window) ·
    Message
    Updated: Setup > Log files finds the logs of a host served from a folder of links
    
    A second host of an installation (edit.) can be served from a folder of
    its own whose index.php, kernel/ and var/ are symbolic links to the real
    installation. The log viewer keeps only log directories whose real path lies
    inside the installation, and took the link folder for the installation: every
    log directory resolved outside it, and Log files, Manage logs, Log health and
    the error digest showed no log at all, although the site wrote its logs.
    
    The installation is now the folder of the index.php that runs, so its var/log
    is inside; a link out of the installation is still never followed. The new
    test LV-SYM-01 to 03 covers both.
    9328294a59
  10. Updated: The request shield pages give the copyright notice in its ap… (opens in a new window) ·
    Message
    Updated: The request shield pages give the copyright notice in its approved form
    
    The license table of the feature page, in English and German, wrote the
    notice of the extension's own files in a form of its own; it now reads
    "Copyright (C) 1998 - 2026 Exponential Foundation and 7x. All rights reserved.",
    as every file of the project does.
    e760a71f9d

Showing 1–10 of 82 commits

Recently updated

Free documentation: use it to help yourself and others

This help is free documentation, licensed under the GNU Free Documentation License 1.3 or later. You may use it, share it and improve it:

  • Study it Read any page as often as you like, for any purpose.
  • Copy it and share it Give pages to other users, on paper or as files. Keep the copyright notice, the license notice and a copy of the license with every copy.
  • Translate, adapt and improve it Share your version under the same license, with the original notices and a note of what you changed.
  • Cite it Refer to a page by its title and its address in the help, or its file in the doc directory.
  • Contribute fixes back Use "Edit on GitHub" on any page. Changes are accepted under the same license, so they stay free for everyone.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x