generated from darkicewolf50/ssg-sveltekit-template
Compare commits
9 Commits
7d365b6710
...
master
Author | SHA1 | Date | |
---|---|---|---|
3e6150cdb2 | |||
ebe09ea5a5 | |||
5845f1180b | |||
10b3091264 | |||
48b1854382 | |||
6fdb9ede53 | |||
b795e60091 | |||
be60e9b4b1 | |||
3a5a697c95 |
@ -2,6 +2,7 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
<meta name="google-site-verification" content="lsAs9c2Pv7c6Sm26z1hd2YqR2depbp4sJddIDYKHkxY" />
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.ico" />
|
<link rel="icon" href="%sveltekit.assets%/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
|
@ -102,6 +102,7 @@
|
|||||||
div div ul div {
|
div div ul div {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
gap: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
69
src/lib/components/layout/Bottom.svelte
Normal file
69
src/lib/components/layout/Bottom.svelte
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<script>
|
||||||
|
export const prerender = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>Brock Tomlinson © 2025</p>
|
||||||
|
<div>
|
||||||
|
<a href="mailto:darkicewolf50@gmail.com">
|
||||||
|
<img src="https://www.svgrepo.com/show/491226/email.svg" alt="Email's logo/icon" />
|
||||||
|
<p>Email</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.youtube.com/@darkicewolf50">
|
||||||
|
<img src="https://www.svgrepo.com/show/521936/youtube.svg" alt="Youtube's logo/icon" />
|
||||||
|
<p>Youtube</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.linkedin.com/in/brock-tomlinson/">
|
||||||
|
<img src="https://www.svgrepo.com/show/521725/linkedin.svg" alt="LinkedIn's logo/icon" />
|
||||||
|
<p>LinkedIn</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.twitch.tv/darkicewolf50">
|
||||||
|
<img src="https://www.svgrepo.com/show/519925/twitch.svg" alt="Twitch's logo/icon" />
|
||||||
|
<p>Twitch</p>
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/darkicewolf50">
|
||||||
|
<img src="https://www.svgrepo.com/show/512317/github-142.svg" alt="Github's logo/icon" />
|
||||||
|
<p>Github</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
footer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
background-color: var(--card-background-color);
|
||||||
|
border-radius: var(--card-border-radius);
|
||||||
|
|
||||||
|
/* background-color: #d3d3d3; */
|
||||||
|
}
|
||||||
|
|
||||||
|
footer div {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex: 1 1 2;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer img {
|
||||||
|
height: 60px;
|
||||||
|
filter: invert() hue-rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a:hover {
|
||||||
|
color: #91a4d2;
|
||||||
|
cursor: pointer;
|
||||||
|
filter: brightness(0) saturate(100%) invert(65%) sepia(13%) saturate(733%) hue-rotate(187deg)
|
||||||
|
brightness(95%) contrast(90%);
|
||||||
|
}
|
||||||
|
</style>
|
31
src/lib/components/layout/Top.svelte
Normal file
31
src/lib/components/layout/Top.svelte
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<script>
|
||||||
|
export const prerender = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<nav>
|
||||||
|
<a href="/">Home</a>
|
||||||
|
<a href="/projects">Projects</a>
|
||||||
|
<a href="/blogs/0">Blogs</a>
|
||||||
|
<a href="/contact">Contact</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
nav {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a {
|
||||||
|
color: #ffffff;
|
||||||
|
margin-right: 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #91a4d2;
|
||||||
|
}
|
||||||
|
</style>
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
let { independent_page = true, techTablePromise = null } = $props();
|
let { independent_page = true, techTablePromise = null } = $props();
|
||||||
|
|
||||||
let limitProjects = $derived(independent_page ? 0 : 8);
|
let limitProjects = $derived(independent_page ? 0 : 6);
|
||||||
|
|
||||||
let projectsPromise = $state(null);
|
let projectsPromise = $state(null);
|
||||||
let techPromise = $state(null);
|
let techPromise = $state(null);
|
||||||
@ -171,5 +171,6 @@
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
column-gap: 1svw;
|
column-gap: 1svw;
|
||||||
|
justify-content: space-evenly;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
|
|
||||||
justify-self: center;
|
justify-self: center;
|
||||||
|
|
||||||
margin: 0svh 1svw;
|
margin: 0svh 0svw;
|
||||||
padding-top: 1svh;
|
padding-top: 1svh;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
@ -125,6 +125,7 @@
|
|||||||
border-radius: var(--underlineTitleBorderRadius);
|
border-radius: var(--underlineTitleBorderRadius);
|
||||||
margin: 0px 2svw;
|
margin: 0px 2svw;
|
||||||
padding: 0px 2svw;
|
padding: 0px 2svw;
|
||||||
|
padding-right: 0px;
|
||||||
|
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -173,9 +174,10 @@
|
|||||||
|
|
||||||
.project-title-info div {
|
.project-title-info div {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 1svw;
|
gap: 20px;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
|
margin: 0svh 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-card div p {
|
.project-card div p {
|
||||||
|
24
src/lib/style/globals.css
Normal file
24
src/lib/style/globals.css
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
:root {
|
||||||
|
--underlineTitle: 4px solid purple;
|
||||||
|
--underlineTitleBorderRadius: 4px;
|
||||||
|
--img-width: 32px;
|
||||||
|
--img-height: 32px;
|
||||||
|
--card-background-color: rgba(38, 38, 38, 0.5);
|
||||||
|
--card-border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #0f1116;
|
||||||
|
color: #ffffff;
|
||||||
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
border-bottom: var(--underlineTitle);
|
||||||
|
border-radius: var(--underlineTitleBorderRadius);
|
||||||
|
display: flex;
|
||||||
|
margin: 2svh 2svw;
|
||||||
|
padding: 0svh 2svw;
|
||||||
|
padding-bottom: 1svh;
|
||||||
|
}
|
@ -1,7 +1,5 @@
|
|||||||
<script>
|
<script>
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
|
|
||||||
// $inspect(page.status);
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<title>Brock Tomlinson - Not Found</title>
|
<title>Brock Tomlinson - Not Found</title>
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const prerender = true;
|
|
@ -1,122 +1,11 @@
|
|||||||
<script>
|
<script>
|
||||||
let { children } = $props();
|
let { children } = $props();
|
||||||
|
import Top from '$lib/components/layout/Top.svelte';
|
||||||
|
import Bottom from '$lib/components/layout/Bottom.svelte';
|
||||||
|
|
||||||
|
import '$lib/style/globals.css';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<header>
|
<Top />
|
||||||
<nav>
|
|
||||||
<a href="/">Home</a>
|
|
||||||
<a href="/projects">Projects</a>
|
|
||||||
<a href="/blogs/0">Blogs</a>
|
|
||||||
<a href="/contact">Contact</a>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
{@render children()}
|
{@render children()}
|
||||||
|
<Bottom />
|
||||||
<footer>
|
|
||||||
<p>Brock Tomlinson © 2025</p>
|
|
||||||
<div>
|
|
||||||
<a href="mailto:darkicewolf50@gmail.com">
|
|
||||||
<img src="https://www.svgrepo.com/show/491226/email.svg" alt="Email's logo/icon" />
|
|
||||||
<p>Email</p>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.youtube.com/@darkicewolf50">
|
|
||||||
<img src="https://www.svgrepo.com/show/521936/youtube.svg" alt="Youtube's logo/icon" />
|
|
||||||
<p>Youtube</p>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.linkedin.com/in/brock-tomlinson/">
|
|
||||||
<img src="https://www.svgrepo.com/show/521725/linkedin.svg" alt="LinkedIn's logo/icon" />
|
|
||||||
<p>LinkedIn</p>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.twitch.tv/darkicewolf50">
|
|
||||||
<img src="https://www.svgrepo.com/show/519925/twitch.svg" alt="Twitch's logo/icon" />
|
|
||||||
<p>Twitch</p>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/darkicewolf50">
|
|
||||||
<img src="https://www.svgrepo.com/show/512317/github-142.svg" alt="Github's logo/icon" />
|
|
||||||
<p>Github</p>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
:global(:root) {
|
|
||||||
--underlineTitle: 4px solid purple;
|
|
||||||
--underlineTitleBorderRadius: 4px;
|
|
||||||
--img-width: 32px;
|
|
||||||
--img-height: 32px;
|
|
||||||
--card-background-color: rgba(38, 38, 38, 0.5);
|
|
||||||
--card-border-radius: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
:global(body) {
|
|
||||||
background-color: #0f1116;
|
|
||||||
color: #ffffff;
|
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
||||||
margin: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:global(h2) {
|
|
||||||
border-bottom: var(--underlineTitle);
|
|
||||||
border-radius: var(--underlineTitleBorderRadius);
|
|
||||||
display: flex;
|
|
||||||
margin: 2svh 2svw;
|
|
||||||
padding: 0svh 2svw;
|
|
||||||
padding-bottom: 1svh;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a {
|
|
||||||
color: #ffffff;
|
|
||||||
margin-right: 20px;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: color 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
color: #91a4d2;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
background-color: var(--card-background-color);
|
|
||||||
border-radius: var(--card-border-radius);
|
|
||||||
|
|
||||||
/* background-color: #d3d3d3; */
|
|
||||||
}
|
|
||||||
|
|
||||||
footer div {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex: 1 1 2;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer img {
|
|
||||||
height: 60px;
|
|
||||||
filter: invert() hue-rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
text-decoration: none;
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a:hover {
|
|
||||||
color: #91a4d2;
|
|
||||||
cursor: pointer;
|
|
||||||
filter: brightness(0) saturate(100%) invert(65%) sepia(13%) saturate(733%) hue-rotate(187deg)
|
|
||||||
brightness(95%) contrast(90%);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
@ -1,11 +1,41 @@
|
|||||||
<script>
|
<script>
|
||||||
import Contact from '$lib/components/contact.svelte';
|
import Contact from '$lib/components/contact.svelte';
|
||||||
|
|
||||||
let contactName = $state('');
|
|
||||||
let contactEmail = $state('');
|
|
||||||
let contactMessage = $state('');
|
|
||||||
|
|
||||||
let error_box_message = $state('');
|
let error_box_message = $state('');
|
||||||
|
let submitButtonEnable = $state(true);
|
||||||
|
let submitButtonText = $derived(submitButtonEnable ? 'Submit' : 'Submitting');
|
||||||
|
|
||||||
|
const formSubmit = async (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
submitButtonEnable = false;
|
||||||
|
|
||||||
|
const formData = new FormData(event.target);
|
||||||
|
const formObject = Object.fromEntries(formData.entries());
|
||||||
|
|
||||||
|
try {
|
||||||
|
let json_to_send = {
|
||||||
|
content: `***New Message***\n*Name*: ${formObject.name}\n*Email*: [${formObject.email}](mailto:${formObject.email})\n*Message*: ${formObject.message}`
|
||||||
|
};
|
||||||
|
const res = await fetch(
|
||||||
|
'https://discord.com/api/webhooks/1374798951475187732/zOL9aD1wWn9rCywjqVAy3oUMnzPu25SVIMCDaLD4N8C_V9OqPK8Hj2Wmm-7Ts5QHTbzN',
|
||||||
|
{
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify(json_to_send)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`Discord webhook error: ${res.status} ${res.statusText}`);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
error_box_message = 'An error has occurred';
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
submitButtonEnable = true;
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<title>Brock Tomlinson - Contact</title>
|
<title>Brock Tomlinson - Contact</title>
|
||||||
@ -18,22 +48,23 @@
|
|||||||
to either fill out this form or contact me through one of the many of the platforms below
|
to either fill out this form or contact me through one of the many of the platforms below
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<form
|
<form onsubmit={formSubmit}>
|
||||||
onsubmit={(e) => {
|
|
||||||
e.preventDefault();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<label for="name">Name</label>
|
<label for="name">Name</label>
|
||||||
<input type="text" id="name" bind:value={contactName} />
|
<input type="text" id="name" name="name" />
|
||||||
|
|
||||||
<label for="email">Email</label>
|
<label for="email">Email</label>
|
||||||
<input type="email" id="email" bind:value={contactEmail} />
|
<input type="email" id="email" name="email" />
|
||||||
|
|
||||||
<label for="message">Message</label>
|
<label for="message">Message</label>
|
||||||
<textarea id="message" bind:value={contactMessage}></textarea>
|
<textarea id="message" name="message"></textarea>
|
||||||
|
|
||||||
<p>{error_box_message}</p>
|
<p>{error_box_message}</p>
|
||||||
<button onclick={() => console.log('Clicked')}> Submit </button>
|
<input
|
||||||
|
type="submit"
|
||||||
|
disabled={!submitButtonEnable}
|
||||||
|
class="submitButton"
|
||||||
|
id={submitButtonEnable ? '' : 'disabledSubmitButton'}
|
||||||
|
/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<Contact />
|
<Contact />
|
||||||
@ -72,7 +103,7 @@
|
|||||||
border-radius: var(--card-border-radius);
|
border-radius: var(--card-border-radius);
|
||||||
border-color: rgba(245, 245, 245, 0.5);
|
border-color: rgba(245, 245, 245, 0.5);
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
padding: 1svh 0svw;
|
padding: 1svh 1ch;
|
||||||
margin: 1svh 0.5svw;
|
margin: 1svh 0.5svw;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
@ -83,14 +114,14 @@
|
|||||||
border-radius: var(--card-border-radius);
|
border-radius: var(--card-border-radius);
|
||||||
border-color: rgba(245, 245, 245, 0.4);
|
border-color: rgba(245, 245, 245, 0.4);
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
padding: 1svh 0svw;
|
padding: 1svh 1ch;
|
||||||
margin: 1svh 0.5svw;
|
margin: 1svh 0.5svw;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
min-height: 25svh;
|
min-height: 25svh;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
.submitButton {
|
||||||
border-radius: var(--card-border-radius);
|
border-radius: var(--card-border-radius);
|
||||||
border-color: rgba(245, 245, 245, 0.5);
|
border-color: rgba(245, 245, 245, 0.5);
|
||||||
padding: 1svh 0svw;
|
padding: 1svh 0svw;
|
||||||
@ -101,9 +132,17 @@
|
|||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover {
|
.submitButton:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: #91a4d2;
|
color: #91a4d2;
|
||||||
background-color: rgba(0, 150, 0, 0.6);
|
background-color: rgba(0, 150, 0, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#disabledSubmitButton {
|
||||||
|
background-color: rgba(211, 211, 211, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
#disabledSubmitButton:hover {
|
||||||
|
background-color: rgba(180, 180, 180, 0.6);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,44 +1,42 @@
|
|||||||
// src/routes/sitemap.xml/+server.ts (or +server.js)
|
import { format } from 'date-fns';
|
||||||
import { format } from 'date-fns'; // Optional, if you want <lastmod> etc.
|
|
||||||
|
|
||||||
export async function GET() {
|
export const GET = async () => {
|
||||||
const baseUrl = 'https://yourdomain.com'; // Replace with your domain
|
const baseUrl = 'https://darkicewolf50.pages.dev';
|
||||||
|
|
||||||
const staticPages = [
|
const staticPages = [
|
||||||
'', // Home page
|
'', // homepage
|
||||||
'contact',
|
'contact',
|
||||||
'projects'
|
'projects'
|
||||||
|
// Add other pages here
|
||||||
];
|
];
|
||||||
|
|
||||||
const urls = staticPages
|
const urls = staticPages
|
||||||
.map(
|
.map(
|
||||||
(path) => `
|
(path) => `
|
||||||
<url>
|
<url>
|
||||||
<loc>${baseUrl}/${path}</loc>
|
<loc>${baseUrl}/${path}</loc>
|
||||||
<lastmod>${format(new Date(), 'yyyy-MM-dd')}</lastmod>
|
<lastmod>${format(new Date(), 'yyyy-MM-dd')}</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>`
|
</url>`
|
||||||
)
|
)
|
||||||
.join('');
|
.join('');
|
||||||
|
|
||||||
return new Response(
|
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
|
||||||
`
|
<urlset
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
<urlset
|
xmlns:xhtml="https://www.w3.org/1999/xhtml"
|
||||||
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
|
xmlns:mobile="https://www.google.com/schemas/sitemap-mobile/1.0"
|
||||||
xmlns:xhtml="https://www.w3.org/1999/xhtml"
|
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
|
||||||
xmlns:mobile="https://www.google.com/schemas/sitemap-mobile/1.0"
|
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
|
||||||
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
|
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
|
||||||
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
|
>
|
||||||
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
|
${urls}
|
||||||
>
|
</urlset>`;
|
||||||
${urls}
|
|
||||||
</urlset>`.trim(),
|
return new Response(sitemap, {
|
||||||
{
|
headers: {
|
||||||
headers: {
|
'Content-Type': 'application/xml'
|
||||||
'Content-Type': 'application/xml'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
});
|
||||||
}
|
};
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
User-agent: *
|
User-agent: *
|
||||||
Disallow: /blogs/
|
Disallow: /blogs/
|
||||||
|
|
||||||
|
Sitemap: https://darkicewolf50.pages.dev/sitemap.xml
|
Reference in New Issue
Block a user