Блоги #1

Merged
rndtrash merged 64 commits from feature-blogs into master 2025-10-22 08:44:56 +03:00
3 changed files with 19 additions and 3 deletions
Showing only changes of commit 74bbae5101 - Show all commits

1
src/app.d.ts vendored
View file

@ -29,6 +29,7 @@ declare global {
publisher: string; publisher: string;
published?: boolean; published?: boolean;
projects?: string[]; projects?: string[];
authors?: string | string[];
} }
} }
} }

View file

@ -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`, и добавляем в него волшебную строчку:

View file

@ -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}