Navigation
eZ Documentation Center
 

This is outdated documentation made for eZ Publish Platform 5.2. It is being moved into the eZ Publish 5.x documentation, so please go there for most up-to-date documentation.

Skip to end of metadata
Go to start of metadata

The following does not apply to siteaccesses configured with legacy_mode: true

 

When the standard view provider is not able to select an appropriate template for a given content, the system fallbacks to the legacy kernel and delegates the view selection to itThis ensures that a content is always displayed and hence eases project migration from eZ Publish v4.x to v5.x


Pagelayout and main block

When falling back to the legacy kernel, the old content/view module is run to return the appropriate view for the given content. However, the pagelayout is not rendered as it needs to be still rendered by Twig in the Symfony part, for consistency. In this regard, the system uses the Decorator design pattern to include the generated view in your layout.

For this to work, you need to configure 2 things :

  1. Which template you want to use as a base template for legacy fallback
  2. The name of the block to use in your layout

Base layout for legacy fallback

You can configure this by setting the ezpublish_legacy.<siteaccess_or_siteaccess_group>.view_default_layout config key.

Example:

ezpublish/config/ezpublish.yml

Block name

Internally when rendering the view coming from the legacy kernel, a Twig template is created on the fly. This template extends the pagelayout you configured and includes the content inside a block. The name of this block is configurable as well (default is content).

ezpublish/config/ezpublish.yml
my_layout.html.twig

 

Module layout

Version compatibility

The module layout setting is available from eZ Publish 5.1.

The module layout can also be defined the same way as the base layout, by setting the ezpublish_legacy.<scope>.module_default_layout config key. This layout is used to handle "non content" related legacy requests.

Displaying legacy module result

This makes your base layout reusable. However, content generated by legacy modules (i.e. /ezinfo/about) will not be automatically inserted as your layout will be rendered as a regular template, receiving module_result variable coming from the legacy kernel. The solution is to use 2 different templates, one for the global layout, and another for legacy module rendering:

AcmeDemoBundle::layout.html.twig
AcmeDemoBundle::layout_legacy.html.twig
ezpublish/config/ezpublish.yml

 

Persistent variable

The persistent variable is a special variable in legacy templates that you can set in order to pass values from the content template to the pagelayout. This variable, among others, is accessible from the configured Twig pagelayout thanks to the helper ezpublish.legacy.

Actually, all data contained in $module_result in the legacy kernel is exposed.

Access to the persistent variable

Assets

Like the persistent variable, it is possible to require css and/or javascripts assets from a content template through the legacy ezscript_require() and ezcss_require() template operators.

You can easily retrieve those requested assets from the legacy template in the Twig pagelayout with the ezpublish.legacy helper.

Getting assets requested from a legacy template

Assetic incompatibility

Warning: If you use Assetic to combine and/or compress your assets, please note that javascripts and stylesheets Twig tags currently don't support variable file lists, so you won't be able to use them with the example above.

  • No labels