From 3e3811c4be44833c984233ad46615f105f5767ac Mon Sep 17 00:00:00 2001 From: "David T. Sadler" Date: Sat, 22 May 2021 13:29:49 +0100 Subject: Generate sitemap --- scripts/build_www_site.php | 2 +- scripts/functions.php | 50 +++++++++++++++++++++++++++++++++- www/sitemap.xml | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 www/sitemap.xml diff --git a/scripts/build_www_site.php b/scripts/build_www_site.php index e610298..f6a5806 100644 --- a/scripts/build_www_site.php +++ b/scripts/build_www_site.php @@ -42,5 +42,5 @@ if (!is_readable($htmlTemplateDiretory)) { $pages = getPages($geminiSrc, $output); -buildWWWSite($pages, $hostname, $htmlTemplateDiretory); +buildWWWSite($pages, $hostname, $htmlTemplateDiretory, $output); diff --git a/scripts/functions.php b/scripts/functions.php index 9b72803..3e8e7a4 100644 --- a/scripts/functions.php +++ b/scripts/functions.php @@ -102,7 +102,7 @@ function parseContent(string $content): array ]; } -function buildWWWSite(array $pages, string $hostname, string $htmlTemplateDiretory): void +function buildWWWSite(array $pages, string $hostname, string $htmlTemplateDiretory, string $output): void { foreach ($pages as $page) { $destDirectory = dirname($page['output']); @@ -123,6 +123,8 @@ function buildWWWSite(array $pages, string $hostname, string $htmlTemplateDireto } generateAtomFeeds($pages, $hostname); + + generateSiteMap($pages, $hostname, $output); } function buildHtmlFile(string $title, string $contents, string $template): string @@ -313,3 +315,49 @@ function buildAtomEntry(string $title, string $href, string $author, string $dat EOF_STR; } +function generateSiteMap(array $pages, string $hostname, $output): void +{ + $posts = array_filter($pages, fn ($post) => $post['isPost']); + + /** + * Sort by latest to previous date. + */ + usort($posts, fn ($a, $b) => $b['date'] <=> $a['date']); + + file_put_contents( + $output.DIRECTORY_SEPARATOR.'sitemap.xml', + buildSiteMap( + implode('', array_map(fn ($post) => postToSiteMapUrl($post, $hostname), $posts)) + ) + ); + +} + +function postToSiteMapUrl(array $post, string $hostname): string +{ + return buildSiteMapUrl( + "https://$hostname{$post['url']}", + "{$post['date']}T12:00:00Z" + ); +} + +function buildSiteMap(string $urls): string +{ + return << + + $urls + +EOF_STR; +} + +function buildSiteMapUrl(string $loc, string $lastmod): string +{ + return << + $loc + $lastmod + never + +EOF_STR; +} diff --git a/www/sitemap.xml b/www/sitemap.xml new file mode 100644 index 0000000..858dd4f --- /dev/null +++ b/www/sitemap.xml @@ -0,0 +1,68 @@ + + + + https://davidtsadler.com/posts/nextcloud/2021-02-15/accessing-nextcloud-with-webdav-on-arch/index.html + 2021-02-15T12:00:00Z + never + + https://davidtsadler.com/posts/gemini/2021-02-08/how-to-host-your-own-gemini-site-in-the-cloud/index.html + 2021-02-08T12:00:00Z + never + + https://davidtsadler.com/posts/php/2021-01-18/installing-php-8-for-windows-10/index.html + 2021-01-18T12:00:00Z + never + + https://davidtsadler.com/posts/laravel/2020-12-21/installing-laravel-homestead-in-arch-linux/index.html + 2020-12-21T12:00:00Z + never + + https://davidtsadler.com/posts/laravel/2020-12-14/sqlstate-hy000-2002-php-network-getaddresses-getaddrinfo-failed/index.html + 2020-12-14T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-09-07/installing-zsh-and-powerlevel10k-on-arch-linux/index.html + 2020-09-07T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-08-31/enabling-audio-in-arch-linux/index.html + 2020-08-31T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-08-24/pacman-cheat-sheet-for-ubuntu-users/index.html + 2020-08-24T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-08-17/installing-st-dmenu-dwm-in-arch-linux/index.html + 2020-08-17T12:00:00Z + never + + https://davidtsadler.com/posts/linux/2020-07-13/sudo-sorry-you-must-have-a-tty-to-run-sudo/index.html + 2020-07-13T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-06-22/granting-sudo-access-to-a-user-in-arch-linux/index.html + 2020-06-22T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-06-15/adding-a-user-in-arch-linux/index.html + 2020-06-15T12:00:00Z + never + + https://davidtsadler.com/posts/netlify/2020-06-08/publishing-jigsaw-posts-with-netlify-build-hooks/index.html + 2020-06-08T12:00:00Z + never + + https://davidtsadler.com/posts/jigsaw/2020-06-01/scheduling-posts-in-jigsaw/index.html + 2020-06-01T12:00:00Z + never + + https://davidtsadler.com/posts/arch/2020-05-25/installing-arch-linux-on-a-thinkpad-x220/index.html + 2020-05-25T12:00:00Z + never + + https://davidtsadler.com/posts/markdown/2020-03-30/creating-an-ebook-with-markdown/index.html + 2020-03-30T12:00:00Z + never + + \ No newline at end of file -- cgit v1.2.3-13-gbd6f