Автор(ы) поста
This commit is contained in:
parent
4eb1cb0a0e
commit
74bbae5101
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;
|
||||
published?: boolean;
|
||||
projects?: string[];
|
||||
authors?: string | string[];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ thumbnail: 'wave.png'
|
|||
thumbnailAlt: 'Смайлик с махающей рукой'
|
||||
date: '2025-09-30'
|
||||
description: 'Немного о том, как мы делали наш сайт'
|
||||
authors: 'rndtrash'
|
||||
---
|
||||
|
||||
# ПРИВЕТ !
|
||||
|
|
@ -82,7 +83,7 @@ RSS в этом плане нам очень удобен, во-первых, п
|
|||
но и машины. В нашем случае это 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()`,
|
||||
возвращающая текст, ручками слепленный в что-то приблизительно похожее на XML. Но погодите, наш сайт же статичный, как мы будем вызывать эту JS-функцию!
|
||||
возвращающая текст, ручками слепленный в что-то приблизительно похожее на XML. Но погодите, наш сайт же статичный, как мы будем вызывать эту JS-функцию?
|
||||
|
||||
_Внимание, фокус!_ Мы берём обычный файл `src/routes/blog/rss.xml/+server.ts`, и добавляем в него волшебную строчку:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,18 @@
|
|||
import { page } from '$app/state';
|
||||
import DateWidget from '$src/lib/components/DateWidget.svelte';
|
||||
import InfoBlock from '$src/lib/components/InfoBlock.svelte';
|
||||
import type { PageData } from './$types';
|
||||
import Icon from '@iconify/svelte';
|
||||
import type { PageData } from './$types';
|
||||
|
||||
export let data: PageData;
|
||||
|
||||
const isPublic = !!data.blogPost.date;
|
||||
const authors =
|
||||
data.blogPost.authors == null
|
||||
? []
|
||||
: typeof data.blogPost.authors === 'string'
|
||||
? [data.blogPost.authors]
|
||||
: data.blogPost.authors;
|
||||
</script>
|
||||
|
||||
<base target="_blank" />
|
||||
|
|
@ -30,7 +36,7 @@
|
|||
</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-red-500 text-slate-50'} sm:flex-row sm:flex-nowrap sm:gap-5"
|
||||
>
|
||||
|
|
@ -38,6 +44,14 @@
|
|||
{#if data.blogPost.dateChanged}
|
||||
<DateWidget dateString={data.blogPost.dateChanged} type="updated" />
|
||||
{/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>
|
||||
|
||||
{#if page.data.blogPost.projects?.length > 0}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue