Refactor Blog and Page Controllers: Updated BlogController and PageController to utilize the new Blog model and integrated dynamic header and footer templates. Removed the DatabaseSeeder file as it is no longer needed. Enhanced the TemplateService to support dynamic content rendering for both blog and page templates, improving the overall template management system.

This commit is contained in:
Ümit Tunç
2025-11-06 16:49:02 -03:00
parent 920502c5d3
commit 605f0d158f
6 changed files with 355 additions and 75 deletions
+79 -6
View File
@@ -3,20 +3,57 @@
namespace App\Http\Controllers;
use App\Models\Setting;
use App\Models\Post;
use App\Models\Blog;
use App\Models\HeaderTemplate;
use App\Models\FooterTemplate;
use App\Services\TemplateService;
class BlogController extends Controller
{
public function index()
{
$settings = class_exists(Setting::class) ? (Setting::query()->first()) : null;
$posts = class_exists(Post::class)
? Post::query()->where('status', 'published')->latest('published_at')->paginate(12)
$posts = class_exists(Blog::class)
? Blog::with(['category', 'author'])
->withCount('comments')
->published()
->latest('published_at')
->paginate(12)
: collect();
// Render Header Template - En son aktif olan header template'i kullan
$renderedHeader = null;
$headerTemplate = HeaderTemplate::where('is_active', true)
->latest('updated_at')
->first();
if ($headerTemplate) {
$templateDefaults = $headerTemplate->default_data ?? [];
$renderedHeader = TemplateService::replacePlaceholders(
$headerTemplate->html_content,
$templateDefaults
);
}
// Render Footer Template - En son aktif olan footer template'i kullan
$renderedFooter = null;
$footerTemplate = FooterTemplate::where('is_active', true)
->latest('updated_at')
->first();
if ($footerTemplate) {
$templateDefaults = $footerTemplate->default_data ?? [];
$renderedFooter = TemplateService::replacePlaceholders(
$footerTemplate->html_content,
$templateDefaults
);
}
return view('blog.index', [
'settings' => $settings,
'posts' => $posts,
'renderedHeader' => $renderedHeader,
'renderedFooter' => $renderedFooter,
'meta' => [
'title' => __('blog.meta-index-title'),
'description' => __('blog.meta-index-description'),
@@ -27,18 +64,54 @@ class BlogController extends Controller
public function show(string $slug)
{
$settings = class_exists(Setting::class) ? (Setting::query()->first()) : null;
if (!class_exists(Post::class)) {
if (!class_exists(Blog::class)) {
abort(404);
}
$post = Post::query()->where('slug', $slug)->where('status', 'published')->firstOrFail();
$post = Blog::with(['category', 'author'])
->withCount('comments')
->published()
->where('slug', $slug)
->firstOrFail();
// Render Header Template - En son aktif olan header template'i kullan
$renderedHeader = null;
$headerTemplate = HeaderTemplate::where('is_active', true)
->latest('updated_at')
->first();
if ($headerTemplate) {
$templateDefaults = $headerTemplate->default_data ?? [];
$renderedHeader = TemplateService::replacePlaceholders(
$headerTemplate->html_content,
$templateDefaults,
$post
);
}
// Render Footer Template - En son aktif olan footer template'i kullan
$renderedFooter = null;
$footerTemplate = FooterTemplate::where('is_active', true)
->latest('updated_at')
->first();
if ($footerTemplate) {
$templateDefaults = $footerTemplate->default_data ?? [];
$renderedFooter = TemplateService::replacePlaceholders(
$footerTemplate->html_content,
$templateDefaults,
$post
);
}
return view('blog.show', [
'settings' => $settings,
'post' => $post,
'renderedHeader' => $renderedHeader,
'renderedFooter' => $renderedFooter,
'meta' => [
'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 ?? null,
'image' => $post->featured_image ? asset('storage/' . $post->featured_image) : null,
],
]);
}