BLOG-73 Change website title dynamically (#77)
All checks were successful
Frontend CI / build (push) Successful in 1m7s

### Description

- Use `generateTitle` to combine app name and page title.

### Package Changes

_No response_

### Screenshots

|Home|Post Overall|Post Content|
|-|-|-|
|![Screenshot From 2025-07-26 01-58-04.png](/attachments/70ed7440-bd5a-4e9d-a747-bb785c9f7e16)|![Screenshot From 2025-07-26 01-58-27.png](/attachments/58386f0d-e476-4795-8ac4-f0abc6586721)|![Screenshot From 2025-07-26 01-58-31.png](/attachments/cf7cb5a6-af5e-4dc6-907f-8cb8253f1b13)|

### Reference

Resolves #73

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #77
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
This commit is contained in:
SquidSpirit 2025-07-26 02:01:24 +08:00 committed by squid
parent 9ad3809f47
commit 95fabee99d
5 changed files with 21 additions and 0 deletions

View File

@ -0,0 +1,6 @@
import { Strings } from '$lib/strings';
export default function generateTitle(pageTitle?: string): string {
if (!pageTitle) return Strings.APP_NAME;
return `${Strings.APP_NAME} - ${pageTitle}`;
}

View File

@ -1,9 +1,13 @@
<script lang="ts"> <script lang="ts">
import generateTitle from '$lib/common/framework/ui/generateTitle';
import Motto from '$lib/home/framework/ui/Motto.svelte'; import Motto from '$lib/home/framework/ui/Motto.svelte';
import Terminal from '$lib/home/framework/ui/Terminal.svelte'; import Terminal from '$lib/home/framework/ui/Terminal.svelte';
import TitleScreen from '$lib/home/framework/ui/TitleScreen.svelte'; import TitleScreen from '$lib/home/framework/ui/TitleScreen.svelte';
</script> </script>
<svelte:head>
<title>{generateTitle()}</title>
</svelte:head>
<div> <div>
<TitleScreen /> <TitleScreen />
<Terminal /> <Terminal />

View File

@ -4,6 +4,7 @@
import { getContext, onMount } from 'svelte'; import { getContext, onMount } from 'svelte';
import markdownit from 'markdown-it'; import markdownit from 'markdown-it';
import SafeHtml from '$lib/common/framework/ui/SafeHtml.svelte'; import SafeHtml from '$lib/common/framework/ui/SafeHtml.svelte';
import generateTitle from '$lib/common/framework/ui/generateTitle';
const { id }: { id: number } = $props(); const { id }: { id: number } = $props();
@ -16,6 +17,9 @@
onMount(() => postBloc.dispatch({ event: PostEventType.PostLoadedEvent, id: id })); onMount(() => postBloc.dispatch({ event: PostEventType.PostLoadedEvent, id: id }));
</script> </script>
<svelte:head>
<title>{generateTitle(state.data?.info.title)}</title>
</svelte:head>
<article class="container prose pb-10"> <article class="container prose pb-10">
{#if state.data} {#if state.data}
<PostContentHeader postInfo={state.data.info} /> <PostContentHeader postInfo={state.data.info} />

View File

@ -1,4 +1,5 @@
<script lang="ts"> <script lang="ts">
import generateTitle from '$lib/common/framework/ui/generateTitle';
import { PostListBloc, PostListEventType } from '$lib/post/adapter/presenter/postListBloc'; import { PostListBloc, PostListEventType } from '$lib/post/adapter/presenter/postListBloc';
import PostPreview from '$lib/post/framework/ui/PostPreview.svelte'; import PostPreview from '$lib/post/framework/ui/PostPreview.svelte';
import { getContext, onMount } from 'svelte'; import { getContext, onMount } from 'svelte';
@ -9,6 +10,9 @@
onMount(() => postListBloc.dispatch({ event: PostListEventType.PostListLoadedEvent })); onMount(() => postListBloc.dispatch({ event: PostListEventType.PostListLoadedEvent }));
</script> </script>
<svelte:head>
<title>{generateTitle('文章')}</title>
</svelte:head>
<div class="container pb-10"> <div class="container pb-10">
<h1 class="py-9 text-center text-3xl font-bold text-gray-800 md:py-20 md:text-5xl">文章</h1> <h1 class="py-9 text-center text-3xl font-bold text-gray-800 md:py-20 md:text-5xl">文章</h1>
<div class="grid grid-cols-1 gap-6 md:grid-cols-2 md:gap-y-8 lg:grid-cols-3"> <div class="grid grid-cols-1 gap-6 md:grid-cols-2 md:gap-y-8 lg:grid-cols-3">

View File

@ -0,0 +1,3 @@
export abstract class Strings {
static readonly APP_NAME = '魚之魷魂 SquidSpirit';
}