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-15T08:49:23Z
2026-09-15T08:49:23Z
Added: Added cleanup of the content an RSS import has created, as a script and a cronjob part, because an import adds an object for every item in the feed and never takes one away, so a site importing a busy feed grows until the destination folder has tens of thousands of children and the administration interface cannot open it.

Ported from the bccleanuprss extension by Brookins Consulting, keeping the method that made it worth porting: the items to keep are skipped by the database itself, by asking for the feed's children newest first and offsetting by the number to keep, so whatever comes back is the surplus and there is no second pass deciding what to drop.

The rest is rebuilt. It did not run at all on any supported version of php, because its constructor was a php 4 one and php 8 no longer calls those, so every setting it read stayed undefined. It was enabled out of the box and its default class list was the numeric ids 16 and 1, which on a stock installation are article and folder, so an installation that took the defaults and had folders below a feed would have removed folders. It deleted permanently with no way back and no way to ask for anything else, called removeSubtrees once per item so that every item cleared the caches and reindexed, had no dry run, and died on the next line when the user it removes as did not exist.

So it now removes nothing until the site has both enabled it and named the classes it may remove, it names them by identifier rather than by id, it moves what it removes to the trash unless told otherwise, it removes a feed's surplus in one call, it takes --dry-run and --keep, and a missing user stops the run with a sentence saying so. Settings live beside the import's own in content.ini rather than in a file of their own, and the bc names are gone while the copyright lines stay.
2026-09-15T08:31:46Z
Updated: Updated the pin on sevenx-themes-media to 1.5.3, the release carrying the cross site link fix.

Links to a page of another site were built from a url alias that is relative to the PathPrefix of whichever siteaccess is rendering, so they answered 404 from every site but the one owning the page. The pin already asked for 1.5.2, which is the release before it.
2026-09-15T08:29:05Z
Updated: Updated the sortable column headings on the locations tab to be the same ones the rss list uses, because they were drawn from a different set of classes and the column being sorted came out painted black while the list beside it marked the same thing with a bold label and an arrow.

The heading had been built from the datatable classes the trashed items list carries, which repaint the whole cell. The rss list already had a heading of its own that keeps the ordinary heading colour, so rather than a third spelling of the same thing that template is now shared: it has moved out of rss/ into parts/, both pages include it from there, and its style rules have moved off the page they were written on into the stylesheet every administration page loads, so the two cannot drift apart again.

The heading takes a suffix that is appended to the address unchanged, which is how the locations tab keeps its tab and its other view parameters on every heading link.
2026-09-15T07:41:10Z
Updated: Updated share/filelist.md5 after the cross site link fix, so the File consistency check keeps passing.
2026-09-15T07:03:52Z
Fixed: Fixed the preloader reporting a broken link on every page of the site that no editor could find, and gave its broken links a report naming the pages that link to them.

The crawler cut the fragment off an address with strtok, which skips leading delimiters: given '#main' it hands back 'main' rather than nothing. The skip link every page carries therefore became a relative address, was resolved against whatever page was being read and was requested as a page, so a run reported /main, /fitness/main, /tags/view/Topics/main and, with debug output on, the same again for the toolbar's '#debug-end'. None of them are pages and none of them could be repaired. Fragments are now cut with strpos and substr, which keeps an empty result, and a fragment only address is discarded like any other empty one. The rule that was added to the skip pattern to hide part of this is kept, unanchored, in case a template emits a real link to either.

Knowing a page is missing is half of what an editor needs; the other half is which pages link to it. The crawl now records the linking page for every address it queues, before the already seen test rather than after, since a link that is already queued is still a link from this page. Each run ends with every missing target listed once, grouped by kind, with the full address of each page that links to it, and the administration view draws the same list as a table of links below the console so the pages can be opened and corrected. At most twenty linking pages are kept per target, with a count of the rest, because a broken link in a template is on every page of the site.
2026-09-15T06:19:39Z
Updated: Updated share/filelist.md5, which the File consistency check on the system upgrade page reads, because it named sixty two files as altered and most of them were nothing of the sort.

The manifest had been generated from the front end document root, and the check runs with php's working directory set to the administration one, which holds symbolic links to the installation and very little of its own. Everything that lives only in the front end root - the install notes, the kickstart files and their backups, the scratch that accumulates beside them - therefore failed file_exists and was reported as altered, and the files that really had been edited were lost in the middle of that list.

Regenerated from the administration root as the script's own instructions require, so the manifest now records the fifty odd kernel, design, extension and settings files this fork has actually changed, along with the multi edit view and the locations paging added since. The check passes.
2026-09-15T05:51:42Z
Added: Added paging and column sorting to the locations tab, because an item that is placed in more than a few thousand locations could not draw the tab at all: the list was fetched whole and then asked the database for the ancestor path and the child count of every row, so the request died before the first byte.

One page is now fetched, sized by content.ini [LocationsSettings] LocationsPerPage, with the position carried as (location_offset) rather than (offset) so that turning the page of locations does not also turn the sub items list on the same view; the shared pager accordingly takes an offset_name that defaults to the name every other caller already uses.

Every heading but the selection checkbox sorts the whole list in the database, since with one page of a possible fifty thousand rows in hand there is nothing useful to sort on screen. The column is looked up in a table of the four that are allowed, so the value may come straight off the address without reaching any sql, and every sort ends on path_string so that a column of equal values keeps a stable order instead of dropping and repeating rows while paging. The two columns that are not stored, the child count and the main location, are computed only when they are the one being sorted on.

The headings use the sortable column classes the trashed items list already uses, so no stylesheet was touched.

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