/** * Initializes the page variant regions on the basis of given layout. * * @param \Drupal\layout\Plugin\Layout\LayoutInterface $layout * * @return \Drupal\layout\Plugin\LayoutRegion\LayoutRegionPluginCollection */ protected function initializeLayoutRegionsFromLayout(LayoutInterface $layout) { $this->configuration['regions'] = array(); $definitions = $layout ? $layout->getRegionDefinitions() : array(); $weight = 0; foreach ($definitions as $id => $regionPluginDefinition) { $this->addLayoutRegion(array('id' => !empty($regionPluginDefinition['plugin_id']) ? $regionPluginDefinition['plugin_id'] : 'default', 'region_id' => $id, 'label' => $regionPluginDefinition['label'], 'weight' => $weight)); $weight++; } $this->configuration['regions'] = $this->getLayoutRegions()->getConfiguration(); return $this->getLayoutRegions(); }
/** * Initializes the page variant regions on the basis of given layout. * * @param LayoutInterface $layout * @return LayoutRegionPluginBag|\Drupal\page_layout\Plugin\LayoutRegionPluginBag */ private function initializeLayoutRegionsFromLayout(LayoutInterface $layout) { $this->configuration['regions'] = array(); $definitions = $layout ? $layout->getRegionDefinitions() : array(); $weight = 0; $uuids_by_region_id = array(); foreach ($definitions as $region_id => $regionPluginDefinition) { $uuids_by_region_id[$region_id] = $this->addLayoutRegion(array('id' => !empty($regionPluginDefinition['plugin_id']) ? $regionPluginDefinition['plugin_id'] : 'default', 'region_id' => $region_id, 'label' => $regionPluginDefinition['label'], 'weight' => $weight, 'parent' => isset($regionPluginDefinition['parent']) ? $regionPluginDefinition['parent'] : NULL, 'options' => isset($regionPluginDefinition['options']) ? $regionPluginDefinition['options'] : NULL)); $weight++; } $configuration = $this->getLayoutRegions()->getConfiguration(); // Make sure that parent machine names are replaced with uuids. // We run this *after* so that we can be sure to have generated all // regions. foreach ($configuration as $uuid => $region_config) { if (isset($region_config['parent'])) { $region_config['parent'] = $uuids_by_region_id[$region_config['parent']]; $this->updateLayoutRegion($uuid, $region_config); } } $this->configuration['regions'] = $this->getLayoutRegions()->getConfiguration(); return $this->getLayoutRegions(); }