Welcome to eZpedia!

The free eZ Publish encyclopedia that anyone can edit. eZpedia has accumulated 722  english articles since 2006. We encourage you to create an account and create or edit a page yourself. Some folks create an article in the people namespace with their full name as the article name with a brief description of who they are, their interests, goals and objectives.

Ask A Question

Do you have an eZ Publish question, do you need an eZ Publish answer? Simply login and ask your question in our discussion forum. We publicly write free documentation based on your submissions. Posting on eZpedia is a great way to get answers you need and contribute to our freely available community documentation for eZ Publish.

Chat with other eZ Publish Developers LIVE from around the World!

Ecosystem

Read about what is going on within the various eZ Publish related websites on internet.

Recent development activity

Track the development progress through the roadmap by reviewing recent Exponential Git activity from the github repository.

github.com/ezsystems/ezpublish-legacy commit log rss feed
Last updated: 2026-09-20T07:44:31Z
2026-09-20T07:44:31Z
Updated: Updated share/filelist.md5 for the layouts documentation rewrite so the file consistency check matches the installation again.
2026-09-20T07:44:31Z
Updated: Updated the layouts documentation to teach the layout editor rather than only describe the architecture, so an editor new to the software can build a customisation or a whole layout from it.

The document covered the data model, the file paths and a quick start, but
never how to use the editor: none of the block types, query types, rule
targets or conditions were listed, and nothing explained when to reach for
one rather than another.

It is now written to be read start to finish, with the reference material at
the end:

- the division of labour the subsystem exists to create, and the five ideas
  everything in the editor is built from
- a section each on layouts, zones, blocks, containers, parameters,
  collections, queries, pinning, rules, drafts and publishing, shared layouts
  and transfer
- two walkthroughs: adding a promotional strip to an existing design without
  touching a template, and building a campaign landing layout that mixes
  curated and automatic content
- how rendering resolves a request to a layout, how to extend the system with
  a block type, view type, container or query handler, and a troubleshooting
  section ordered by what actually goes wrong

The catalogues were read out of the running installation through eZINI rather
than transcribed from a settings file, so they describe what the software
offers: twelve layout types with their zones, forty-six block definitions
with their view types and which carry a collection, twelve query types, four
container blocks with their placeholders, six rule targets, five condition
types and six parameter widget types.

Behaviour that is easy to misread is now written down: the route target type
is declared but never matches, an unrecognised condition type matches rather
than failing so a typo widens a rule instead of disabling it, a query
parameter condition with no values only requires the parameter to be present,
and a zone can only link to a published shared layout. Query handler authors
are warned that MongoDB returns an empty result for SQL it cannot translate,
so a handler written with a join looks exactly like a query with no matches.
2026-09-20T05:28:30Z
Updated: Updated share/filelist.md5 for the eztags and media theme tag fixes and the matching composer pins, so the file consistency check matches the installation again.
2026-09-20T05:28:30Z
Updated: Updated the pins on eztags and sevenx-themes-media to the releases that make tags render on MongoDB installations.

- se7enxweb/eztags ~2.3.3 -> ~2.3.4: eZTagsObject reads the keyword and its
  locale without the join to eztags_keyword, so a tag carries its text and
  resolves to its own page instead of a bare /tags/view.
- se7enxweb/sevenx-themes-media ~1.5.6 -> ~1.5.7: content_tags() resolves an
  object's tags without the join to eztags_attribute_link, so the tag list
  renders at all.

Both halves are needed together: the theme makes the list appear, and eztags
gives each entry its keyword and its link.
2026-09-20T03:43:55Z
Updated: Updated share/filelist.md5 for the MongoDB driver, composer and explayouts extension changes so the file consistency check matches the installation again.
2026-09-20T03:43:55Z
Updated: Updated the pins on explayouts, explayouts-ui and explayouts-ui-api to the releases that fix the API failures those extensions reported silently.

- se7enxweb/explayouts ~1.3.5 -> ~1.3.6: object state lookups and the
  installer's table probes answer correctly on every engine.
- se7enxweb/explayouts-ui ~1.2.1 -> ~1.2.2: the component usage and shared
  layout listings report what is there on MongoDB.
- se7enxweb/explayouts-ui-api ~1.2.2 -> ~1.2.3: the share endpoint no longer
  answers 201 for a token it did not store.
2026-09-20T03:43:54Z
Added: Added CREATE TABLE handling to the MongoDB driver so an extension can build a table at runtime, giving the collection the PRIMARY index generated ids are read from and the unique indexes that keep duplicates out.

MongoDB creates a collection on first write, so the statement matters for its
indexes rather than its columns. Without a branch for it, query() fell through
to the unhandled-SQL path: it logged, returned false, and left the caller
writing into a collection that had never been prepared. autoIncrementField()
looks for an index named PRIMARY, so ids came back empty, and nothing enforced
a unique column.

The branch reads the key clauses out of the statement - PRIMARY KEY, UNIQUE
KEY, KEY, and a column carrying its own UNIQUE marker - and creates the
matching indexes under the same names expMongoSchema writes when it builds
collections from a .dba. Column definitions and storage options are skipped:
they carry nothing a collection can hold. Re-issuing an identical index is a
no-op in MongoDB, which is what IF NOT EXISTS has to mean here.

The clause splitter counts bracket depth and respects quotes, so a composite
key stays one clause and the word KEY inside a quoted default is not mistaken
for an index. Covered by ai/bin/one/test_mongo_create_table_parser.php.

Recent discussions

Read what others are discussing

Recently updated articles

Read recently modified articles

ezpedia.org updated content rss feed
  1. eZ : Main page
  2. Solution : Read-only site
    • @5 | 2025/01/25 @ 17:17:56 : Graham Brookins : History - based on version 4, republishing in attempt to regain example settings display
  3. Solution : Reseting the admin password in eZ publish
    • @15 | 2024/10/25 @ 21:09:06 : Graham Brookins : History - based on version 14 added missing comma to example copy and paste code.
  4. Learning : Extensions
  5. Learning : Standard Events
  6. Learning : Standard Triggers
  7. Learning : A workflow
  8. Learning : Events
  9. Learning : Workflow
  10. Learning : Roles
  11. Learning : Policies
  12. Learning : User Groups
  13. Learning : Site Access
  14. Learning : Design Structure
  15. Learning : Default Design
  16. Learning : Access Control
  17. Learning : Designs
  18. Learning : Template Override System
  19. Learning : Pagelayout.tpl
  20. Learning : Custom System Templates