From 0f9970722f0223428398ee060c14d76c8bd81d64 Mon Sep 17 00:00:00 2001
From: Mia Winter
Date: Sun, 17 Mar 2024 13:46:16 +0100
Subject: [PATCH] Improved SEO through better page titles (this mostly affects
google)
---
Wave/Components/Pages/Admin.razor | 6 +++---
Wave/Components/Pages/ArticleDeleteConfirm.razor | 6 +++---
Wave/Components/Pages/ArticleEditor.razor | 6 +++---
Wave/Components/Pages/ArticleView.razor | 6 +++---
Wave/Components/Pages/CategoryView.razor | 9 ++++++---
Wave/Components/Pages/Deleted.razor | 6 +++---
Wave/Components/Pages/Drafts.razor | 4 ++++
Wave/Components/Pages/EmailEdit.razor | 6 +++---
Wave/Components/Pages/EmailSignup.razor | 6 +++---
Wave/Components/Pages/Error.razor | 6 ++++--
Wave/Components/Pages/Future.razor | 5 +++++
Wave/Components/Pages/Home.razor | 2 +-
Wave/Components/Pages/ManageApi.razor | 6 +++---
Wave/Components/Pages/ManageCategories.razor | 6 +++---
Wave/Components/Pages/ManageUsers.razor | 6 +++---
Wave/Components/Pages/Newsletter.razor | 6 +++---
Wave/Components/Pages/Review.razor | 4 ++++
Wave/Components/Pages/UserView.razor | 9 ++++++---
Wave/Program.cs | 3 +--
19 files changed, 64 insertions(+), 44 deletions(-)
diff --git a/Wave/Components/Pages/Admin.razor b/Wave/Components/Pages/Admin.razor
index f04fa32..bd18b6f 100644
--- a/Wave/Components/Pages/Admin.razor
+++ b/Wave/Components/Pages/Admin.razor
@@ -17,7 +17,7 @@
@inject IStringLocalizer Localizer
@inject IDistributedCache WaveDistributedCache
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@@ -40,8 +40,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
diff --git a/Wave/Components/Pages/ArticleDeleteConfirm.razor b/Wave/Components/Pages/ArticleDeleteConfirm.razor
index c2b9f25..d639a48 100644
--- a/Wave/Components/Pages/ArticleDeleteConfirm.razor
+++ b/Wave/Components/Pages/ArticleDeleteConfirm.razor
@@ -9,7 +9,7 @@
@inject ILogger Logger
@inject IStringLocalizer Localizer
-@(TitlePrefix + (Article is not null ? Localizer["Delete_Title"] : Localizer["NotFound_Title"]))
+@((Article is not null ? Localizer["Delete_Title"] : Localizer["NotFound_Title"]) + TitlePostfix)
@if (Article is not null) {
@@ -34,8 +34,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[Parameter]
public Guid Id { get; set; }
diff --git a/Wave/Components/Pages/ArticleEditor.razor b/Wave/Components/Pages/ArticleEditor.razor
index 6bf3372..7d3f508 100644
--- a/Wave/Components/Pages/ArticleEditor.razor
+++ b/Wave/Components/Pages/ArticleEditor.razor
@@ -10,7 +10,7 @@
@inject UserManager UserManager
@inject IStringLocalizer Localizer
-@(TitlePrefix + Localizer["EditorTitle"])
+@(Localizer["EditorTitle"] + TitlePostfix)
@if (User is null) {
@Localizer["EditorTitle"]
@@ -33,8 +33,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
private Task? AuthenticationState { get; set; }
diff --git a/Wave/Components/Pages/ArticleView.razor b/Wave/Components/Pages/ArticleView.razor
index 32501b0..9cc011b 100644
--- a/Wave/Components/Pages/ArticleView.razor
+++ b/Wave/Components/Pages/ArticleView.razor
@@ -22,7 +22,7 @@
@inject EmailFactory Email
@inject IEmailService EmailService
-@(TitlePrefix + (Article?.Title ?? Localizer["NotFound_Title"]))
+@((Article?.Title ?? Localizer["NotFound_Title"]) + TitlePostfix)
@if (Article is not null) {
@@ -105,8 +105,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
#region Route Parameters
diff --git a/Wave/Components/Pages/CategoryView.razor b/Wave/Components/Pages/CategoryView.razor
index 3bb4d20..d150ab8 100644
--- a/Wave/Components/Pages/CategoryView.razor
+++ b/Wave/Components/Pages/CategoryView.razor
@@ -14,9 +14,12 @@
}
+ @if (Category is null) {
+
+ }
-@(TitlePrefix + Localizer["Title"] + " | " + (Category?.Name ?? "Not Found"))
+@($"{Category?.Name ?? "Not Found"} {TitlePostfix}")
@if (Category is null) {
@Localizer["NotFound_Title"]
@@ -29,8 +32,8 @@
}
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[Parameter]
public string CategoryName { get; set; } = string.Empty;
diff --git a/Wave/Components/Pages/Deleted.razor b/Wave/Components/Pages/Deleted.razor
index 9a65975..1ac524c 100644
--- a/Wave/Components/Pages/Deleted.razor
+++ b/Wave/Components/Pages/Deleted.razor
@@ -8,7 +8,7 @@
@inject IDbContextFactory ContextFactory
@inject IStringLocalizer Localizer
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@Localizer["Title"]
@@ -23,8 +23,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
private List Articles { get; } = [];
diff --git a/Wave/Components/Pages/Drafts.razor b/Wave/Components/Pages/Drafts.razor
index 5927f0d..056fd27 100644
--- a/Wave/Components/Pages/Drafts.razor
+++ b/Wave/Components/Pages/Drafts.razor
@@ -8,10 +8,14 @@
@inject UserManager UserManager
@inject IStringLocalizer Localizer
+@(Localizer["Title"] + TitlePostfix)
+
@Localizer["Title"]
@code {
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
diff --git a/Wave/Components/Pages/EmailEdit.razor b/Wave/Components/Pages/EmailEdit.razor
index c00039c..a573027 100644
--- a/Wave/Components/Pages/EmailEdit.razor
+++ b/Wave/Components/Pages/EmailEdit.razor
@@ -16,7 +16,7 @@
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@@ -33,8 +33,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[Parameter, SupplyParameterFromQuery(Name = "user")]
public string? Id { get; set; }
diff --git a/Wave/Components/Pages/EmailSignup.razor b/Wave/Components/Pages/EmailSignup.razor
index ee96957..e169392 100644
--- a/Wave/Components/Pages/EmailSignup.razor
+++ b/Wave/Components/Pages/EmailSignup.razor
@@ -22,7 +22,7 @@
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@@ -44,8 +44,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[SupplyParameterFromForm(FormName = "email-signup")]
private InputModel Model { get; set; } = new();
diff --git a/Wave/Components/Pages/Error.razor b/Wave/Components/Pages/Error.razor
index a6d3b61..f56613a 100644
--- a/Wave/Components/Pages/Error.razor
+++ b/Wave/Components/Pages/Error.razor
@@ -3,7 +3,7 @@
@inject IStringLocalizer Localizer
-@Localizer["Title"]
+@(Localizer["Title"] + TitlePostfix)
@Localizer["Title"]
@@ -15,7 +15,9 @@
}
-@code{
+@code {
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
diff --git a/Wave/Components/Pages/Future.razor b/Wave/Components/Pages/Future.razor
index 28a64d4..117ad20 100644
--- a/Wave/Components/Pages/Future.razor
+++ b/Wave/Components/Pages/Future.razor
@@ -6,10 +6,15 @@
@inject IDbContextFactory ContextFactory
@inject IStringLocalizer Localizer
+@(Localizer["Title"] + TitlePostfix)
+
@Localizer["Title"]
@code {
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
+
private List Articles { get; } = [];
protected override async Task OnInitializedAsync() {
diff --git a/Wave/Components/Pages/Home.razor b/Wave/Components/Pages/Home.razor
index 73483dd..849bbb9 100644
--- a/Wave/Components/Pages/Home.razor
+++ b/Wave/Components/Pages/Home.razor
@@ -40,7 +40,7 @@
}
-@(TitlePrefix[..^3])
+@(Customizations.Value.AppName ?? "Wave")
diff --git a/Wave/Components/Pages/ManageApi.razor b/Wave/Components/Pages/ManageApi.razor
index 45386db..52c6b59 100644
--- a/Wave/Components/Pages/ManageApi.razor
+++ b/Wave/Components/Pages/ManageApi.razor
@@ -12,7 +12,7 @@
@inject IMessageDisplay Message
@inject IStringLocalizer
Localizer
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@Localizer["Title"]
@@ -81,8 +81,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[SupplyParameterFromForm(FormName = "NewApiKey")]
private InputModel Model { get; set; } = new();
diff --git a/Wave/Components/Pages/ManageCategories.razor b/Wave/Components/Pages/ManageCategories.razor
index 9bec96f..50cdb9d 100644
--- a/Wave/Components/Pages/ManageCategories.razor
+++ b/Wave/Components/Pages/ManageCategories.razor
@@ -11,7 +11,7 @@
@inject IStringLocalizer Localizer
@inject IMessageDisplay Message
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@@ -67,8 +67,8 @@ bg-error text-error-content
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
private InputModel Model { get; set; } = new();
private List Categories { get; } = new();
diff --git a/Wave/Components/Pages/ManageUsers.razor b/Wave/Components/Pages/ManageUsers.razor
index a109daa..0727aeb 100644
--- a/Wave/Components/Pages/ManageUsers.razor
+++ b/Wave/Components/Pages/ManageUsers.razor
@@ -13,7 +13,7 @@
@inject IStringLocalizer Localizer
@inject IMessageDisplay Toast
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@Localizer["Title"]
@@ -57,8 +57,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
private string ModalId { get; } = "UserDialog";
[CascadingParameter]
diff --git a/Wave/Components/Pages/Newsletter.razor b/Wave/Components/Pages/Newsletter.razor
index bf3d618..c69022f 100644
--- a/Wave/Components/Pages/Newsletter.razor
+++ b/Wave/Components/Pages/Newsletter.razor
@@ -8,7 +8,7 @@
@inject IDbContextFactory ContextFactory
@inject IOptions Features
-@(TitlePrefix + Localizer["Title"])
+@(Localizer["Title"] + TitlePostfix)
@Localizer["Title"]
@@ -56,8 +56,8 @@
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
private IReadOnlyList Newsletters { get; set; } = [];
private int SubscribersTotal { get; set; }
diff --git a/Wave/Components/Pages/Review.razor b/Wave/Components/Pages/Review.razor
index 1b1cd59..e09a451 100644
--- a/Wave/Components/Pages/Review.razor
+++ b/Wave/Components/Pages/Review.razor
@@ -6,10 +6,14 @@
@inject IDbContextFactory ContextFactory
@inject IStringLocalizer Localizer
+@(Localizer["Title"] + TitlePostfix)
+
@Localizer["Title"]
@code {
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
private List Articles { get; } = [];
protected override async Task OnInitializedAsync() {
diff --git a/Wave/Components/Pages/UserView.razor b/Wave/Components/Pages/UserView.razor
index e354ef8..6e5496d 100644
--- a/Wave/Components/Pages/UserView.razor
+++ b/Wave/Components/Pages/UserView.razor
@@ -15,9 +15,12 @@
}
+ @if (User is null) {
+
+ }
-@(TitlePrefix + @Localizer["Title"] + " | " + (User?.FullName ?? Localizer["NotFound_Title"]))
+@($"{(User?.FullName ?? Localizer["NotFound_Title"])} {TitlePostfix}")
@if (User is null) {
@Localizer["NotFound_Title"]
@@ -62,8 +65,8 @@
}
@code {
- [CascadingParameter(Name = "TitlePrefix")]
- private string TitlePrefix { get; set; } = default!;
+ [CascadingParameter(Name = "TitlePostfix")]
+ private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
public required HttpContext HttpContext { get; set; }
diff --git a/Wave/Program.cs b/Wave/Program.cs
index 7f9cc7c..a530075 100644
--- a/Wave/Program.cs
+++ b/Wave/Program.cs
@@ -173,8 +173,7 @@
builder.Services.Configure(builder.Configuration.GetSection(nameof(Features)));
builder.Services.Configure(builder.Configuration.GetSection(nameof(Customization)));
-builder.Services.AddCascadingValue("TitlePrefix",
- sf => (sf.GetService>()?.Value.AppName ?? "Wave") + " - ");
+builder.Services.AddCascadingValue("TitlePostfix", sf => " | " + (sf.GetService>()?.Value.AppName ?? "Wave"));
var emailConfig = builder.Configuration.GetSection("Email").Get();
builder.Services.Configure(builder.Configuration.GetSection("Email"));