Create sitemap

This commit is contained in:
Bruno Rybársky 2024-02-15 10:17:09 +01:00
parent 30937e8d75
commit 92c470aade
3 changed files with 35 additions and 0 deletions

@ -18,6 +18,11 @@ if (!isLoggedIn()) {
setDefaultSessionData(); setDefaultSessionData();
} }
if($routerRequest["site_name"] == "sitemap.xml") {
require "lib/sitemap.php";
return generateSitemap();
}
if ($routerRequest["type"] == "api") { if ($routerRequest["type"] == "api") {
echo getEndpoint($routerRequest["site_name"]); echo getEndpoint($routerRequest["site_name"]);

@ -26,6 +26,7 @@ function initRouter(): array
if($_SERVER["REQUEST_METHOD"] == "POST"){ if($_SERVER["REQUEST_METHOD"] == "POST"){
$routerRequest["type"] = "api"; $routerRequest["type"] = "api";
} }
if(empty($routerRequest["type"])) { if(empty($routerRequest["type"])) {
$routerRequest["type"] = "page"; $routerRequest["type"] = "page";
} }

29
lib/sitemap.php Normal file

@ -0,0 +1,29 @@
<?php
require "lib/sitemap.php";
function generateSitemap(): string {
global $routerConfig;
$site_dirs = array_diff(scandir($routerConfig["page_dir"]), array('.', '..'));
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$sitemap .= '<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
foreach ($site_dirs as $site_dir) {
$pages_dir = array_diff(scandir($routerConfig["page_dir"] . $site_dir), array('.', '..'));
foreach ($pages_dir as $page_file) {
$page_file_tmp = explode(".", $page_file);
$page_basename = $page_file_tmp[0];
$page_location = "/" . $site_dir . "/" . $page_basename;
$sitemap .= '<url>' . PHP_EOL;
$sitemap .= '<loc>' . htmlspecialchars($page_location) . '</loc>' . PHP_EOL;
// You can add other optional tags like lastmod, changefreq, priority here if needed
$sitemap .= '</url>' . PHP_EOL;
}
}
$sitemap .= '</urlset>' . PHP_EOL;
return $sitemap;
}