diff --git a/includes/preprocess.inc b/includes/preprocess.inc index e51d870..c93c991 100644 --- a/includes/preprocess.inc +++ b/includes/preprocess.inc @@ -15,6 +15,7 @@ use Drupal\Component\Utility\Html; use Drupal\Core\Template\Attribute; use Drupal\Core\Url; use Drupal\block\Entity\Block; +use Drupal\Core\Render\Element; use Drupal\uikit\UIkit; /** @@ -90,41 +91,31 @@ function uikit_preprocess_region(&$variables) { $variables['content_left'] = []; $variables['content_center'] = []; $variables['content_right'] = []; + $renderer = \Drupal::service('renderer'); - foreach ($variables['elements'] as $id => $element) { - if (is_array($element)) { - $block = array(); + foreach (Element::children($variables['elements']) as $id) { + $element = $variables['elements'][$id]; - if (isset($element['#id'])) { - $block = Block::load($element['#id']); - } - elseif (isset($element['#markup'])) { - $block = Block::load($id); - } - - if ($block) { - $navbar_alignment = $block->getThirdPartySetting('uikit_components', 'uikit_navbar_alignment', 'left'); + $block = []; - switch ($navbar_alignment) { - case 'left': - $variables['content_left'][$id] = [ - '#markup' => \Drupal::service('renderer')->render($element), - ]; - break; - - case 'center': - $variables['content_center'][$id] = [ - '#markup' => \Drupal::service('renderer')->render($element), - ]; - break; + if (isset($element['#id'])) { + $block = Block::load($element['#id']); + } + elseif (isset($element['#markup'])) { + $block = Block::load($id); + } - case 'right': - $variables['content_right'][$id] = [ - '#markup' => \Drupal::service('renderer')->render($element), - ]; - break; - } - } + if ($block) { + $navbar_alignment = $block->getThirdPartySetting('uikit_components', 'uikit_navbar_alignment', 'left'); + $key = 'content_' . $navbar_alignment; + $variables[$key][$id] = [ + '#markup' => isset($element['#markup']) ? $element['#markup'] : $renderer->render($element), + '#cache' => isset($element['#cache']) ? $element['#cache'] : [], + '#attached' => isset($element['#attached']) ? $element['#attached'] : [], + ]; + + // Leave a note where block has been moved to. + $variables['elements'][$id]['#placement'] = $key; } } }