Блоги #1
3 changed files with 19 additions and 3 deletions
1
src/app.d.ts
vendored
1
src/app.d.ts
vendored
|
|
@ -29,6 +29,7 @@ declare global {
|
||||||
publisher: string;
|
publisher: string;
|
||||||
published?: boolean;
|
published?: boolean;
|
||||||
projects?: string[];
|
projects?: string[];
|
||||||
|
authors?: string | string[];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ thumbnail: 'wave.png'
|
||||||
thumbnailAlt: 'Смайлик с махающей рукой'
|
thumbnailAlt: 'Смайлик с махающей рукой'
|
||||||
date: '2025-09-30'
|
date: '2025-09-30'
|
||||||
description: 'Немного о том, как мы делали наш сайт'
|
description: 'Немного о том, как мы делали наш сайт'
|
||||||
|
authors: 'rndtrash'
|
||||||
---
|
---
|
||||||
|
|
||||||
# ПРИВЕТ !
|
# ПРИВЕТ !
|
||||||
|
|
@ -82,7 +83,7 @@ RSS в этом плане нам очень удобен, во-первых, п
|
||||||
но и машины. В нашем случае это Discord-бот [FeedCord](https://github.com/Qolors/FeedCord/). Ура, можно не городить свой воркфлоу, дёргающий [веб-хуки](https://discord.com/developers/docs/resources/webhook)!
|
но и машины. В нашем случае это Discord-бот [FeedCord](https://github.com/Qolors/FeedCord/). Ура, можно не городить свой воркфлоу, дёргающий [веб-хуки](https://discord.com/developers/docs/resources/webhook)!
|
||||||
|
|
||||||
Поскольку SvelteKit — это fullstack-фреймворк, на нём же напишем простую ручку [rss.xml](https://teasanctuary.ru/blog/rss.xml). Это будет простая функция `GET()`,
|
Поскольку SvelteKit — это fullstack-фреймворк, на нём же напишем простую ручку [rss.xml](https://teasanctuary.ru/blog/rss.xml). Это будет простая функция `GET()`,
|
||||||
возвращающая текст, ручками слепленный в что-то приблизительно похожее на XML. Но погодите, наш сайт же статичный, как мы будем вызывать эту JS-функцию!
|
возвращающая текст, ручками слепленный в что-то приблизительно похожее на XML. Но погодите, наш сайт же статичный, как мы будем вызывать эту JS-функцию?
|
||||||
|
|
||||||
_Внимание, фокус!_ Мы берём обычный файл `src/routes/blog/rss.xml/+server.ts`, и добавляем в него волшебную строчку:
|
_Внимание, фокус!_ Мы берём обычный файл `src/routes/blog/rss.xml/+server.ts`, и добавляем в него волшебную строчку:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,18 @@
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
import DateWidget from '$src/lib/components/DateWidget.svelte';
|
import DateWidget from '$src/lib/components/DateWidget.svelte';
|
||||||
import InfoBlock from '$src/lib/components/InfoBlock.svelte';
|
import InfoBlock from '$src/lib/components/InfoBlock.svelte';
|
||||||
import type { PageData } from './$types';
|
|
||||||
import Icon from '@iconify/svelte';
|
import Icon from '@iconify/svelte';
|
||||||
|
import type { PageData } from './$types';
|
||||||
|
|
||||||
export let data: PageData;
|
export let data: PageData;
|
||||||
|
|
||||||
const isPublic = !!data.blogPost.date;
|
const isPublic = !!data.blogPost.date;
|
||||||
|
const authors =
|
||||||
|
data.blogPost.authors == null
|
||||||
|
? []
|
||||||
|
: typeof data.blogPost.authors === 'string'
|
||||||
|
? [data.blogPost.authors]
|
||||||
|
: data.blogPost.authors;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<base target="_blank" />
|
<base target="_blank" />
|
||||||
|
|
@ -30,7 +36,7 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
class="flex shrink-0 flex-col items-center justify-center p-4 font-bold {isPublic
|
class="flex shrink-0 flex-col items-center justify-center p-2 font-bold {isPublic
|
||||||
? 'bg-amber-50 text-slate-950'
|
? 'bg-amber-50 text-slate-950'
|
||||||
: 'bg-red-500 text-slate-50'} sm:flex-row sm:flex-nowrap sm:gap-5"
|
: 'bg-red-500 text-slate-50'} sm:flex-row sm:flex-nowrap sm:gap-5"
|
||||||
>
|
>
|
||||||
|
|
@ -38,6 +44,14 @@
|
||||||
{#if data.blogPost.dateChanged}
|
{#if data.blogPost.dateChanged}
|
||||||
<DateWidget dateString={data.blogPost.dateChanged} type="updated" />
|
<DateWidget dateString={data.blogPost.dateChanged} type="updated" />
|
||||||
{/if}
|
{/if}
|
||||||
|
{#each authors as author}
|
||||||
|
<a class="flex items-center gap-2 p-1 text-lg font-bold" href="/team/{author}">
|
||||||
|
<Icon icon="material-symbols:person" width={28} height={28} />
|
||||||
|
<span class="underline">
|
||||||
|
{author}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{#if page.data.blogPost.projects?.length > 0}
|
{#if page.data.blogPost.projects?.length > 0}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue