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-11T09:48:06Z
2026-09-11T09:48:06Z
Added: bcusauserShopAccountHandler shop account handler.

Carries over the handler from the bcwebshop kernel override so a site can
select it with shopaccount.ini [AccountSettings] Handler=bcusauser. It
extends eZUserShopAccountHandler and inherits its behaviour unchanged,
which now includes reading the address from <city> with a fallback to the
older <place> tag.

Not active by default: shopaccount.ini ships Handler=ezuser.
2026-09-11T09:13:51Z
Merge pull request #95 from se7enxweb/shop-basket-cart-ini-switch

Added: Configurable name for the shop basket page.
2026-09-11T09:11:28Z
Added: Configurable name for the shop basket page.

The basket was reachable only at /shop/basket/, with that name hardcoded in
twelve places across six kernel scripts and in every shipped template's form
action, so a site that wanted to call it a cart had to fork kernel/shop.

shop.ini [BasketSettings] BasketViewName now decides the name. Any simple
token works - basket, cart, buyer - and routing, redirects, form actions, the
breadcrumb and the template lookup all follow it. Letters, digits, dash and
underscore are accepted; anything else falls back to basket rather than
producing a URL that routes nowhere.

eZBasket gains two static methods. viewName() returns the validated setting.
viewTemplate() asks the design system whether shop/<name>.tpl exists and
returns basket when it does not, so a new name needs no template of its own
while a themed one still gets its own file - design/standard's shop/cart.tpl
ships as the worked example and includes the basket markup rather than
duplicating it.

kernel/shop/module.php registers the configured name as a view at runtime,
alongside basket. Both run the same basket.php, so there is one code path and
nothing can drift between the two names, and an existing link to /shop/basket/
keeps resolving whatever the setting.

$FunctionList['basket'] in function_definition.php is deliberately untouched:
that is the shop/basket policy function name, and renaming it would break
every role policy granting access to the basket.

Templates take the name from the basket_view_name variable the module sets,
with a fallback, rather than reading the setting themselves.

Four kernel faults found while wiring this up are fixed here too, all of them
present at the default setting:

Adding a product to the basket did nothing. operation_definition.php declares
option_list as a required parameter of type array, but add.php passed the
session variable straight through and it is simply unset for a product with no
options. The parameter check failed and the operation returned STATUS_CONTINUE
without running its body, so the request redirected to the basket having added
nothing and logged no error.

addToBasket() then called array_keys() on that same non-array, which is fatal
on PHP 8. The option list is normalised at the top of the method.

currentBasket() matched on session_id alone, so a basket already attached to
an order but with a blanked session was handed to any request arriving without
a session id, and items were added to a dead basket. The lookup now also
requires order_id = 0.

userregister.php required address line 2 and ignored line 1 - the stray
indentation on that if suggests it was never intended - so a form filled in
the obvious way could not be submitted and gave no clue why. Line 1 is now the
required one. The same script accepts City with a fallback to Place, stores
the address line as <city>, and collects an optional <phone>, required only
when the form offers the field so shipped templates without it are unaffected.
eZUserShopAccountHandler reads <city> with a fallback to <place> and returns
the address under both keys, so orders stored before the rename still render.

doc/bc/6.0/shop-basket-view-name.md documents the setting, the API, the
template contract and the compatibility notes.

share/filelist.md5 is regenerated for the changed kernel, settings, design and
doc files. It is generated from the document root the web server actually
serves, so it lists only the files a checkout contains: a run from the project
directory instead picks up local working trees that are not part of the
release, which added several thousand spurious entries.
2026-09-03T04:11:28Z
Updated: Updated file listing md5 hashes
2026-09-03T03:51:46Z
Added: expInfo PHP API and expinfo template operator.

Added: expInfo class in lib/ezutils/classes/expinfo.php for querying
       active/available extensions and the installation kernel.
Added: eZTemplateExpInfoOperator and registered the expinfo template operator.
Added: doc/bc/6.0/expinfo-operator.md and ai/doc/expinfo_operator_wave_1.md.

Updated: kernel/setup/extensions.php to collect metadata via expInfo.
Updated: design/admin/templates/setup/extensions.tpl with Extension/License
         columns and detailed extension info cards.
Updated: autoload/ezp_kernel.php for expInfo and eZTemplateExpInfoOperator.
2026-09-01T14:55:29Z
Updated: Prevent fatal error when serializing empty relation list items.

The package export of ezobjectrelationlist attributes crashed with
"Call to a member function attribute() on null" when a relation item
had an empty contentobject-id. Add a null check before reading the
remote_id and skip those items.
2026-09-01T01:48:32Z
Added: se7enxweb/ngclasslist dependency so the ngclasslist datatype is available for the ng_menu_item content class.

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