Files
animexe/resources/views/frontend/blog/index.blade.php
T
2026-07-14 00:01:48 +03:00

145 lines
7.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('frontend.layouts.app')
@section('title', 'Anime Blog — Rehberler, İncelemeler ve Öneriler | Animexe')
@section('meta_description', 'Animexe anime blogunda izleme rehberleri, anime incelemeleri, tür önerileri ve AI destekli içerikler keşfedin.')
@section('meta_keywords', 'anime blog, anime rehberi, anime inceleme, anime önerisi, animexe blog')
@section('og_type', 'website')
@push('styles')
<style>
.blog-hero{background:linear-gradient(180deg,rgba(12,12,26,.95) 0%,var(--bg) 100%);padding:calc(var(--nav-h) + 32px) 24px 36px;border-bottom:1px solid rgba(0,245,255,.12)}
.blog-hero h1{font-family:var(--font-display);font-size:1.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
.blog-hero p{color:var(--text2);font-size:.95rem;max-width:520px}
.blog-grid{display:grid;grid-template-columns:1fr 300px;gap:32px;max-width:1200px;margin:0 auto}
.blog-card{
background:linear-gradient(145deg,rgba(17,17,31,.95),rgba(10,10,20,.98));
border:1px solid rgba(0,245,255,.1);border-radius:var(--r2);overflow:hidden;
transition:transform .2s,box-shadow .22s,border-color .2s;
display:flex;flex-direction:column;
}
.blog-card:hover{transform:translateY(-4px);border-color:rgba(255,45,125,.4);box-shadow:0 16px 48px rgba(0,0,0,.5),0 0 32px rgba(255,45,125,.1)}
.blog-thumb{aspect-ratio:16/9;overflow:hidden;background:var(--surface2)}
.blog-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.blog-card:hover .blog-thumb img{transform:scale(1.05)}
.blog-thumb-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:2.5rem}
.blog-body{padding:18px;flex:1;display:flex;flex-direction:column}
.blog-category{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--accent2);margin-bottom:8px}
.blog-title{font-size:.95rem;font-weight:700;color:var(--text);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:8px}
.blog-excerpt{font-size:.8rem;color:var(--text2);line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;flex:1}
.blog-footer{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding-top:12px;border-top:1px solid rgba(0,245,255,.08)}
.blog-date{font-size:.72rem;color:var(--text3)}
.blog-read{font-size:.72rem;color:var(--text3);display:flex;align-items:center;gap:4px}
.blog-ai-badge{display:inline-flex;align-items:center;gap:4px;font-size:.65rem;font-weight:700;
padding:2px 8px;border-radius:999px;background:rgba(124,58,237,.2);border:1px solid rgba(124,58,237,.3);
color:#a78bfa;margin-bottom:8px}
.sidebar-card{background:rgba(17,17,31,.8);border:1px solid rgba(0,245,255,.1);border-radius:var(--r2);padding:18px;margin-bottom:20px}
.sidebar-title{font-family:var(--font-display);font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent2);margin-bottom:14px;font-weight:700}
.sidebar-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid rgba(0,245,255,.05);align-items:flex-start}
.sidebar-item:last-child{border-bottom:none}
.sidebar-item-title{font-size:.8rem;font-weight:600;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sidebar-item-date{font-size:.68rem;color:var(--text3);margin-top:3px}
.sidebar-thumb{width:52px;height:52px;border-radius:6px;overflow:hidden;flex-shrink:0;background:var(--surface2)}
.sidebar-thumb img{width:100%;height:100%;object-fit:cover}
.posts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
@media(max-width:900px){
.blog-grid{grid-template-columns:1fr}
.blog-sidebar{display:none}
}
@media(max-width:480px){
.posts-grid{grid-template-columns:1fr}
}
</style>
@endpush
@section('content')
<div class="blog-hero">
<div style="max-width:1200px;margin:0 auto">
<h1><i class="bi bi-journal-richtext" style="color:var(--accent2);font-size:1.2rem;margin-right:10px"></i>Anime Blog</h1>
<p>AI destekli anime rehberleri, izleme önerileri ve derinlemesine incelemeler.</p>
</div>
</div>
<div class="section">
<div class="blog-grid">
<div>
@if($posts->count())
<div class="posts-grid">
@foreach($posts as $post)
<a href="{{ route('blog.show', $post->slug) }}" class="blog-card" style="text-decoration:none">
<div class="blog-thumb">
@if($post->coverUrl)
<img src="{{ $post->coverUrl }}" alt="{{ $post->title }}" loading="lazy">
@else
<div class="blog-thumb-ph"><i class="bi bi-journal-richtext"></i></div>
@endif
</div>
<div class="blog-body">
@if($post->ai_generated)
<div class="blog-ai-badge"><i class="bi bi-stars" style="font-size:.6rem"></i> AI İçerik</div>
@endif
@if($post->anime)
<div class="blog-category">{{ $post->anime->title }}</div>
@endif
<div class="blog-title">{{ $post->title }}</div>
<div class="blog-excerpt">{{ $post->excerpt }}</div>
<div class="blog-footer">
<span class="blog-date">{{ $post->published_at?->format('d.m.Y') }}</span>
<span class="blog-read"><i class="bi bi-clock" style="font-size:.65rem"></i> {{ $post->reading_time }} dk</span>
</div>
</div>
</a>
@endforeach
</div>
@if($posts->hasPages())
<div style="margin-top:32px">{{ $posts->links('frontend.pagination') }}</div>
@endif
@else
<div style="text-align:center;padding:80px 20px;color:var(--text3)">
<i class="bi bi-journal-text" style="font-size:3rem;opacity:.25;display:block;margin-bottom:14px"></i>
<p>Henüz blog yazısı yok. Yakında yapay zeka destekli içerikler gelecek!</p>
</div>
@endif
</div>
<aside class="blog-sidebar">
{{-- Son Yazılar --}}
@if($recent->count())
<div class="sidebar-card">
<div class="sidebar-title">Son Yazılar</div>
@foreach($recent as $p)
<a href="{{ route('blog.show', $p->slug) }}" class="sidebar-item" style="text-decoration:none">
<div class="sidebar-thumb">
@if($p->coverUrl)<img src="{{ $p->coverUrl }}" alt="" loading="lazy">
@else<div style="width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text3)"><i class="bi bi-journal-text"></i></div>@endif
</div>
<div>
<div class="sidebar-item-title">{{ $p->title }}</div>
<div class="sidebar-item-date">{{ $p->published_at?->format('d.m.Y') }}</div>
</div>
</a>
@endforeach
</div>
@endif
{{-- En Çok Okunanlar --}}
@if($popular->count())
<div class="sidebar-card">
<div class="sidebar-title"><i class="bi bi-fire" style="color:var(--accent)"></i> En Çok Okunanlar</div>
@foreach($popular as $p)
<a href="{{ route('blog.show', $p->slug) }}" class="sidebar-item" style="text-decoration:none">
<div class="sidebar-thumb">
@if($p->coverUrl)<img src="{{ $p->coverUrl }}" alt="" loading="lazy">
@else<div style="width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text3)"><i class="bi bi-journal-text"></i></div>@endif
</div>
<div>
<div class="sidebar-item-title">{{ $p->title }}</div>
<div class="sidebar-item-date">{{ number_format($p->views) }} görüntülenme</div>
</div>
</a>
@endforeach
</div>
@endif
</aside>
</div>
</div>
@endsection