Mercurial > hg > cmmr2012-drupal-site
diff core/modules/layout_builder/layout_builder.install @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/layout_builder/layout_builder.install Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,40 @@ +<?php + +/** + * @file + * Contains install and update functions for Layout Builder. + */ + +use Drupal\Core\Cache\Cache; +use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay; +use Drupal\layout_builder\Section; + +/** + * Implements hook_install(). + */ +function layout_builder_install() { + $displays = LayoutBuilderEntityViewDisplay::loadMultiple(); + /** @var \Drupal\layout_builder\Entity\LayoutEntityDisplayInterface[] $displays */ + foreach ($displays as $display) { + // Create the first section from any existing Field Layout settings. + $field_layout = $display->getThirdPartySettings('field_layout'); + if (isset($field_layout['id'])) { + $field_layout += ['settings' => []]; + $display->appendSection(new Section($field_layout['id'], $field_layout['settings'])); + } + + // Sort the components by weight. + $components = $display->get('content'); + uasort($components, 'Drupal\Component\Utility\SortArray::sortByWeightElement'); + foreach ($components as $name => $component) { + $display->setComponent($name, $component); + } + $display->save(); + } + + // Clear the rendered cache to ensure the new layout builder flow is used. + // While in many cases the above change will not affect the rendered output, + // the cacheability metadata will have changed and should be processed to + // prepare for future changes. + Cache::invalidateTags(['rendered']); +}