$display) { if (($info = $display->getThirdPartySettings('ds')) && isset($info['layout']['id'])) { $id = $info['layout']['id']; $regions = $info['regions']; $settings = $info['layout']['settings']; $path = isset($info['layout']['path']) ? $info['layout']['path'] : ''; $layouts[$entity_id] = new BootstrapLayout($id, $regions, $settings, $path); } } return $layouts; } /** * {@inheritdoc} */ public function saveInstances(array $layouts = []) { $displays = EntityViewDisplay::loadMultiple(array_keys($layouts)); /** @var \Drupal\bootstrap_layouts\BootstrapLayout[] $layouts */ foreach ($layouts as $entity_id => $layout) { /** @var \Drupal\Core\Entity\Display\EntityDisplayInterface $display */ $display = $displays[$entity_id]; $info = $display->getThirdPartySettings('ds'); $info['layout']['id'] = $layout->getId(); $info['regions'] = $layout->getRegions(); $info['layout']['settings'] = $layout->getSettings(); $info['layout']['path'] = $layout->getPath(); // Unfortunately, there is no "setThirdPartySettings" method, so each // property must be iterated over manually, set and then saved. foreach ($info as $key => $value) { $display->setThirdPartySetting('ds', $key, $value); } $display->save(); } } }