Почему содержимое head передаётся в body PHP?

Пытаюсь сделать шаблоны страниц. На одном сайте нашёл код, который только частично работает. После выполнения скрипта, на готовой странице в тэге <head> не пишется ничего, но пишется в <body>, хотя в шаблоне прописано нормально. Вероятно дело в функции renderTemplate или том, как формируется контент. Как это исправить?

Страница сборки:

<?php
function renderTemplate($template, $param = false) {
  ob_start();
  if ($param) {
    extract($param);
  }
  include($template);
}
$items_list = ['patch' => 'pa', 'id'=>'id', 'title'=>'ti', 'temp'=>'et'];
// Этот блок выводится первым, а после него всё содержимое тэга head и остаток страницы
$page_content = renderTemplate('main.php', ['items' => $items_list]);
$layout_content = renderTemplate('layout.php',
['content' => $page_content, 'title' => 'Dnevnik наблюдений за погодой']);

print($layout_content);
?>

Страница шаблона:

<!DOCTYPE html>
  <html lang="ru">
  <head>
    <meta charset="UTF-8">
    <title><?= $title; ?></title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
    <header class="main-header">
      <h1 class="visually-hidden">Дневник погоды</h1>
    </header>
    <div class="main-content">
      <main class="content"><?= $content; ?></main>
    </div>
    <footer class="main-footer">Дневник наблюдения за погодой.</footer>
  </body>
</html>

Контент:

<div class="content__main-col">
  <h2 class="visually-hidden">Последние записи</h2>
  <a class="button" href="">Добавить новую</a>
  <ul class="items-list">
    <?php foreach ($items as $item): ?>
      <?=renderTemplate('item.php', ['item' => $item]);?>
    <?php endforeach; ?>
  </ul>
</div>

Ответы (0 шт):