diff --git a/src/App/templates/app/index.html.twig b/src/App/templates/app/index.html.twig
index 74933678..a7990241 100644
--- a/src/App/templates/app/index.html.twig
+++ b/src/App/templates/app/index.html.twig
@@ -1,6 +1,5 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/index.jsonld.twig') }} {% endblock %}
-{% block title %}A PSR-15 compliant application{% endblock %}
{% block head_links %}{% endblock %}
{% block content %}
diff --git a/src/App/templates/error/404.html.twig b/src/App/templates/error/404.html.twig
index 1288d3f6..5eaa746f 100644
--- a/src/App/templates/error/404.html.twig
+++ b/src/App/templates/error/404.html.twig
@@ -1,6 +1,5 @@
{% extends '@layout/default.html.twig' %}
-{% block title %}404 Not Found{% endblock %}
{% block canonical %}{% endblock %}
{% block content %}
diff --git a/src/App/templates/error/410.html.twig b/src/App/templates/error/410.html.twig
index 3f5a7a23..0f40f6e2 100644
--- a/src/App/templates/error/410.html.twig
+++ b/src/App/templates/error/410.html.twig
@@ -1,6 +1,5 @@
{% extends '@layout/default.html.twig' %}
-{% block title %}410 Gone{% endblock %}
{% block canonical %}{% endblock %}
{% block content %}
diff --git a/src/App/templates/error/error.html.twig b/src/App/templates/error/error.html.twig
index 45142e09..5086ed93 100644
--- a/src/App/templates/error/error.html.twig
+++ b/src/App/templates/error/error.html.twig
@@ -1,6 +1,5 @@
{% extends '@layout/default.html.twig' %}
-{% block title %}{{ status }} {{ reason }}{% endblock %}
{% block canonical %}{% endblock %}
{% block content %}
diff --git a/src/App/templates/layout/blog-post.html.twig b/src/App/templates/layout/blog-post.html.twig
index 3d675b56..c9523a49 100644
--- a/src/App/templates/layout/blog-post.html.twig
+++ b/src/App/templates/layout/blog-post.html.twig
@@ -1,5 +1,11 @@
{% extends '@layout/default.html.twig' %}
+{% set canonicalUrl = app.url ~ path('page::blog-resource', {categorySlug: article.category.slug, slug: article.slug}) %}
+{% set ogType = 'article' %}
+
+{% block canonical %}
+{% endblock %}
+
{% block json_ld %}
{% endblock %}
-{% block title %}{{ article.title }}{% endblock %}
-
{% block head_links %}
{% endblock %}
diff --git a/src/App/templates/layout/default.html.twig b/src/App/templates/layout/default.html.twig
index beb522c4..77a281f8 100644
--- a/src/App/templates/layout/default.html.twig
+++ b/src/App/templates/layout/default.html.twig
@@ -8,6 +8,9 @@
document.documentElement.setAttribute('data-theme', saved === 'dark' ? 'dark' : 'light');
})();
+ {% set meta = meta ?? article ?? category ?? tag ?? null %}
+ {% set ogImage = meta.openGraphImage ?? null %}
+ {% set ogImageUrl = ogImage ? (app.url ~ ogImage) : app.meta.image %}
{{ include('@partial/meta.html.twig') }}
{% block canonical %}
{% endblock %}
diff --git a/src/App/templates/partial/meta.html.twig b/src/App/templates/partial/meta.html.twig
index 138c52b9..95b2b919 100644
--- a/src/App/templates/partial/meta.html.twig
+++ b/src/App/templates/partial/meta.html.twig
@@ -1,19 +1,21 @@
-{% set ogImage = meta.openGraphImage ?? null %}
+{% set ogDescription = meta.description ?? meta.excerpt ?? app.meta.description %}
{{ meta.title ?? meta.name ?? app.meta.title }}
-
+
-
-
-
+
+
+
+
-
+
-
-
+
+
+
diff --git a/src/Blog/src/Handler/GetCategoryResourceHandler.php b/src/Blog/src/Handler/GetCategoryResourceHandler.php
index 926f15a0..d2984e11 100644
--- a/src/Blog/src/Handler/GetCategoryResourceHandler.php
+++ b/src/Blog/src/Handler/GetCategoryResourceHandler.php
@@ -34,8 +34,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
if ($category->getPublishedPostsCount() === 0) {
return $this->blogService->gone($categories);
}
- $meta = $category;
-
$queryParams = $request->getQueryParams();
$params = Paginator::getParams($queryParams, 'articles.id');
$data = Paginator::wrapper(
@@ -49,7 +47,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
[
'categories' => $categories,
'category' => $category,
- 'meta' => $meta,
'data' => $data,
]
);
diff --git a/src/Blog/src/Handler/GetPostResourceHandler.php b/src/Blog/src/Handler/GetPostResourceHandler.php
index b9a0915b..630884df 100644
--- a/src/Blog/src/Handler/GetPostResourceHandler.php
+++ b/src/Blog/src/Handler/GetPostResourceHandler.php
@@ -60,7 +60,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
if ($article->getStatus() !== PostStatusEnum::Published) {
return $this->blogService->notFound($categories);
}
- $meta = $article;
$adjacent = $this->articleRepository->getAdjacentPosts($article);
if ($article->isTwig()) {
@@ -69,7 +68,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
"page::blog-resource/{$categorySlug}/{$slug}",
[
'article' => $article,
- 'meta' => $meta,
'categories' => $categories,
'previousPost' => $adjacent['previous'],
'nextPost' => $adjacent['next'],
@@ -95,7 +93,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
'page::markdown-article',
[
'article' => $article,
- 'meta' => $meta,
'categories' => $categories,
'previousPost' => $adjacent['previous'],
'nextPost' => $adjacent['next'],
diff --git a/src/Blog/src/Handler/GetTagResourceHandler.php b/src/Blog/src/Handler/GetTagResourceHandler.php
index a03a9e47..00e5b7bb 100644
--- a/src/Blog/src/Handler/GetTagResourceHandler.php
+++ b/src/Blog/src/Handler/GetTagResourceHandler.php
@@ -33,8 +33,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
if ($tag === null) {
return $this->blogService->notFound($categories);
}
- $meta = $tag;
-
$queryParams = $request->getQueryParams();
$params = Paginator::getParams($queryParams, 'articles.id');
$data = Paginator::wrapper(
@@ -48,7 +46,6 @@ public function handle(ServerRequestInterface $request): ResponseInterface
[
'categories' => $categories,
'tag' => $tag,
- 'meta' => $meta,
'data' => $data,
]
);
diff --git a/src/Blog/templates/page/author-resource.html.twig b/src/Blog/templates/page/author-resource.html.twig
index 4358de08..bfeb62a3 100644
--- a/src/Blog/templates/page/author-resource.html.twig
+++ b/src/Blog/templates/page/author-resource.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/author-resource.jsonld.twig') }} {% endblock %}
-{% block title %}{{ author.name }}{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
back_href: url('page::blog'),
diff --git a/src/Blog/templates/page/authors.html.twig b/src/Blog/templates/page/authors.html.twig
index f28bd7d3..e1bc642c 100644
--- a/src/Blog/templates/page/authors.html.twig
+++ b/src/Blog/templates/page/authors.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/authors.jsonld.twig') }} {% endblock %}
-{% block title %}Authors{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
badge: 'Explore',
diff --git a/src/Blog/templates/page/blog.html.twig b/src/Blog/templates/page/blog.html.twig
index afd850f4..7314b5ba 100644
--- a/src/Blog/templates/page/blog.html.twig
+++ b/src/Blog/templates/page/blog.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/blog.jsonld.twig') }} {% endblock %}
-{% block title %}Posts{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
badge: 'Blog',
diff --git a/src/Blog/templates/page/categories.html.twig b/src/Blog/templates/page/categories.html.twig
index d4f12de5..3db8cacb 100644
--- a/src/Blog/templates/page/categories.html.twig
+++ b/src/Blog/templates/page/categories.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/categories.jsonld.twig') }} {% endblock %}
-{% block title %}Categories{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
badge: 'Explore',
diff --git a/src/Blog/templates/page/category-resource.html.twig b/src/Blog/templates/page/category-resource.html.twig
index 5694a5d4..db7329c9 100644
--- a/src/Blog/templates/page/category-resource.html.twig
+++ b/src/Blog/templates/page/category-resource.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/category-resource.jsonld.twig') }} {% endblock %}
-{% block title %}{{ category.name }}{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
back_href: url('page::categories'),
diff --git a/src/Blog/templates/page/contact.html.twig b/src/Blog/templates/page/contact.html.twig
index b028a743..fdf09ef9 100644
--- a/src/Blog/templates/page/contact.html.twig
+++ b/src/Blog/templates/page/contact.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/contact.jsonld.twig') }} {% endblock %}
-{% block title %}Contact{% endblock %}
-
{% block stylesheets %}{% endblock %}
{% set support_links = [
diff --git a/src/Blog/templates/page/dotkernel-packages-oss-lifecycle.html.twig b/src/Blog/templates/page/dotkernel-packages-oss-lifecycle.html.twig
index 8b81ad4e..8275882a 100644
--- a/src/Blog/templates/page/dotkernel-packages-oss-lifecycle.html.twig
+++ b/src/Blog/templates/page/dotkernel-packages-oss-lifecycle.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/dotkernel-packages-oss-lifecycle.jsonld.twig') }} {% endblock %}
-{% block title %}Dotkernel Packages OSS Lifecycle{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
badge: 'Open Source',
diff --git a/src/Blog/templates/page/tag-resource.html.twig b/src/Blog/templates/page/tag-resource.html.twig
index 4f2827f4..2f324334 100644
--- a/src/Blog/templates/page/tag-resource.html.twig
+++ b/src/Blog/templates/page/tag-resource.html.twig
@@ -1,8 +1,6 @@
{% extends '@layout/default.html.twig' %}
{% block json_ld %} {{ include('@jsonld/tag-resource.jsonld.twig') }} {% endblock %}
-{% block title %}{{ tag.name }}{% endblock %}
-
{% block page_title %}
{{ include('@partial/title-section.html.twig', {
back_href: url('page::blog'),
diff --git a/src/Page/templates/page/about.html.twig b/src/Page/templates/page/about.html.twig
index 61501216..ff4ecbd6 100644
--- a/src/Page/templates/page/about.html.twig
+++ b/src/Page/templates/page/about.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-about-dk.com.png',
} %}
-{% block title %}About Us{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/admin.html.twig b/src/Page/templates/page/admin.html.twig
index 2204879e..1f914031 100644
--- a/src/Page/templates/page/admin.html.twig
+++ b/src/Page/templates/page/admin.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-admin.png',
} %}
-{% block title %}Dotkernel Admin{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/api.html.twig b/src/Page/templates/page/api.html.twig
index eb6f0b2c..ccd5cb6a 100644
--- a/src/Page/templates/page/api.html.twig
+++ b/src/Page/templates/page/api.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-api.png',
} %}
-{% block title %}Dotkernel API{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/architecture.html.twig b/src/Page/templates/page/architecture.html.twig
index 622a66d3..56f03c96 100644
--- a/src/Page/templates/page/architecture.html.twig
+++ b/src/Page/templates/page/architecture.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-architecture.png',
} %}
-{% block title %}Architecture{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/dotboost.html.twig b/src/Page/templates/page/dotboost.html.twig
index f84a30aa..641c3fe8 100644
--- a/src/Page/templates/page/dotboost.html.twig
+++ b/src/Page/templates/page/dotboost.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-dotboost.png',
} %}
-{% block title %}dotboost{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/frontend.html.twig b/src/Page/templates/page/frontend.html.twig
index 3d8f7f66..0b1422a6 100644
--- a/src/Page/templates/page/frontend.html.twig
+++ b/src/Page/templates/page/frontend.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-frontend.png',
} %}
-{% block title %}Dotkernel Frontend{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/light.html.twig b/src/Page/templates/page/light.html.twig
index 8ed2d9ff..c8888b7c 100644
--- a/src/Page/templates/page/light.html.twig
+++ b/src/Page/templates/page/light.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-light.png',
} %}
-{% block title %}Dotkernel Light{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/queue.html.twig b/src/Page/templates/page/queue.html.twig
index dd618a18..62aa37ac 100644
--- a/src/Page/templates/page/queue.html.twig
+++ b/src/Page/templates/page/queue.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-queue.png',
} %}
-{% block title %}Dotkernel Queue{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}
diff --git a/src/Page/templates/page/wsl2.html.twig b/src/Page/templates/page/wsl2.html.twig
index 72906a0e..8ecda9e4 100644
--- a/src/Page/templates/page/wsl2.html.twig
+++ b/src/Page/templates/page/wsl2.html.twig
@@ -8,8 +8,6 @@
openGraphImage: '/opengraph/pages/twitter-card-wsl2.png',
} %}
-{% block title %}Development Environment{% endblock %}
-
{% block head_links %}{% endblock %}
{% block stylesheets %}