Version 6 pre-stable
This version of Silverstripe CMS has not yet been given a stable release. See the release roadmap for more information. Go to documentation for the most recent stable version.

Migrating content from pages

After installing elemental and applying it to certain page types - the standard content editor is replaced by a block editor. This means existing content is lost. The MigrateContentToElement task is provided that will migrate existing content for you. It will:

  • Identify pages that have ElementalPageExtension
  • Filter out any that have empty content
  • Create a content block (ElementContent) and set the content to the existing page content
  • Clear the existing page content
  • Save and publish the page and the block if the latest page version was previously published

There are several configuration options and extension hooks to allow customising the functionality of this class.

Choosing not to replace the standard content editor

If you wish to apply elemental to pages but still retain the default Content field, use the config setting

DNADesign\Elemental\Extensions\ElementalAreasExtension:
  keep_content_fields: true

Note This setting is globally applied. If you wish to replace the default Content area for all but a few select page types, you can instead add a config option to that class

YourVendor\YourProject\Pages\SpecialBlockAndContentPage:
  elemental_keep_content_field: true

The owner class config setting will always take precedence over the global setting (on the extension). This makes it possible to e.g. keep content fields globally, except for select page types.

Configuring the element that is created

You may configure which element content is migrated to by using the following configuration:

DNADesign\Elemental\Tasks\MigrateContentToElement:
  target_element: My\App\Blocks\MyBlock
  target_element_field: Content

target_element specifies the element that will be created and target_element_field specifies the data field that will be populated with the content from the page. Additionally you can use the updateMigratedElement extension point to further modify the element using the existing content and page.

Disabling auto publish

You may disable the "auto-publish" functionality of this task with config

DNADesign\Elemental\Tasks\MigrateContentToElement:
  publish_changes: false

Keeping the content on the page

In some cases you may wish to keep the existing content stored on the Content field on pages. Removing it is optional and can be turned off with config:

DNADesign\Elemental\Tasks\MigrateContentToElement:
  clear_content: false

With this setting enabled the task can no longer filter out pages that have already been migrated by checking if the existing content is empty. Instead the task will not migrate pages that have at least one block already while this configuration option is enabled.

Working without the ElementalPageExtension

While this task is built for pages that use the ElementalPageExtension it is possible to use elemental using only the ElementalAreaExtension. In this case you can extend this task and overload the isMigratable and getAreaRelationFromPage methods to support your use-case.