feat: implement structured data support for blog and page components, enhancing SEO and user experience through JSON-LD integration

This commit is contained in:
Ümit Tunç
2026-05-21 21:54:12 +03:00
parent 8675325f50
commit 6d9ffc808b
15 changed files with 509 additions and 176 deletions
+10
View File
@@ -9,6 +9,7 @@ use App\Models\HeaderTemplate;
use App\Models\FooterTemplate;
use App\Services\TemplateService;
use App\Models\Page;
use App\Support\BlogStructuredData;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
@@ -115,6 +116,8 @@ class BlogController extends Controller
]);
}
$pageUrl = url()->current();
return view('blog.index', [
'settings' => $settings,
'posts' => $posts,
@@ -125,6 +128,9 @@ class BlogController extends Controller
'title' => __('blog.meta-index-title'),
'description' => __('blog.meta-index-description'),
],
'structuredData' => $posts instanceof \Illuminate\Contracts\Pagination\LengthAwarePaginator
? BlogStructuredData::forIndex($posts, $pageUrl)
: null,
]);
}
@@ -215,6 +221,8 @@ class BlogController extends Controller
);
}
$pageUrl = route('blog.show', $post->slug);
return view('blog.show', [
'settings' => $settings,
'post' => $post,
@@ -226,7 +234,9 @@ class BlogController extends Controller
'title' => method_exists($post, 'translate') ? ($post->translate('meta_title') ?: $post->translate('title')) : ($post->meta_title ?? $post->title),
'description' => method_exists($post, 'translate') ? ($post->translate('meta_description') ?: $post->translate('excerpt')) : ($post->meta_description ?? $post->excerpt),
'image' => $post->featured_image ? asset('storage/' . $post->featured_image) : null,
'og_type' => 'article',
],
'structuredData' => BlogStructuredData::forShow($post, $pageUrl),
]);
}