From 1a2b40ae18890d117e5da115e9aeb9fdb38a74c7 Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Sat, 29 Mar 2025 13:18:13 +0700 Subject: [PATCH] feat: homepage news --- .../Controllers/Homepage/NewsController.php | 47 +++++ app/Models/News.php | 5 + public/assets/homepage/css/custom.css | 6 + resources/views/homepage/index.blade.php | 12 +- resources/views/homepage/news/index.blade.php | 58 ++++++ resources/views/homepage/news/read.blade.php | 178 ++++++++++++++++++ .../views/partials/homepage/header.blade.php | 4 +- routes/web.php | 8 +- 8 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 app/Http/Controllers/Homepage/NewsController.php create mode 100644 resources/views/homepage/news/index.blade.php create mode 100644 resources/views/homepage/news/read.blade.php diff --git a/app/Http/Controllers/Homepage/NewsController.php b/app/Http/Controllers/Homepage/NewsController.php new file mode 100644 index 0000000..9c00802 --- /dev/null +++ b/app/Http/Controllers/Homepage/NewsController.php @@ -0,0 +1,47 @@ + 'Berita', + 'page' => 'news', + ]; + + $search = $request->input('search', null); + + if($search){ + $data['news'] = News::where('title', 'LIKE', "%{$search}%") + // ->orWhere('content', 'LIKE', "%{$search}%") + ->latest() + ->simplePaginate(12); + }else{ + $data['news'] = News::latest()->simplePaginate(12); + } + + return view('homepage.news.index', $data); + } + + public function read($slug){ + $news = News::where('slug', $slug)->first(); + $news->increment('views', 1); + + $data = [ + 'title' => 'Berita', + 'page' => 'news', + 'news' => $news, + 'popularNews' => News::orderBy('views', 'desc')->take(5)->get(), + 'otherNews' => News::orderByDesc('id')->where('id', '!=', $news->id)->take(3)->get() + ]; + + return view('homepage.news.read', $data); + + } +} diff --git a/app/Models/News.php b/app/Models/News.php index ad99e9a..a33717b 100644 --- a/app/Models/News.php +++ b/app/Models/News.php @@ -18,6 +18,11 @@ class News extends Model 'link', 'tag', 'category', + 'views', 'author_id' ]; + + public function author(){ + return $this->belongsTo(User::class, 'author_id', 'id'); + } } diff --git a/public/assets/homepage/css/custom.css b/public/assets/homepage/css/custom.css index b02b1e1..be4d6b3 100644 --- a/public/assets/homepage/css/custom.css +++ b/public/assets/homepage/css/custom.css @@ -19,6 +19,12 @@ .information-img { border-radius: 8px; } +.popular-post-img { + width: 100%; + height: 100px; + object-fit: cover; +} + /* .information-img { width: 100%; height: 200px; diff --git a/resources/views/homepage/index.blade.php b/resources/views/homepage/index.blade.php index f88a070..ab6ca54 100644 --- a/resources/views/homepage/index.blade.php +++ b/resources/views/homepage/index.blade.php @@ -68,15 +68,15 @@
  • @@ -116,7 +116,7 @@
    diff --git a/resources/views/homepage/news/index.blade.php b/resources/views/homepage/news/index.blade.php new file mode 100644 index 0000000..a8629f4 --- /dev/null +++ b/resources/views/homepage/news/index.blade.php @@ -0,0 +1,58 @@ +@include('partials.homepage.head') + + @include('partials.homepage.header') + +
    +
    +
    +
    +

    Berita

    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + {{$news->links()}} +
    +
    +
    +
    + + +@include('partials.homepage.footer') diff --git a/resources/views/homepage/news/read.blade.php b/resources/views/homepage/news/read.blade.php new file mode 100644 index 0000000..c3a3db8 --- /dev/null +++ b/resources/views/homepage/news/read.blade.php @@ -0,0 +1,178 @@ +@include('partials.homepage.head') + + @include('partials.homepage.header') + + + + +
    +
    +
    +
    + Eksplorasi +

    Baca berita lainnya

    +
    +
    +
    +
    + +
    +
    +
    +
    + + +@include('partials.homepage.footer') diff --git a/resources/views/partials/homepage/header.blade.php b/resources/views/partials/homepage/header.blade.php index f8988c6..446c413 100644 --- a/resources/views/partials/homepage/header.blade.php +++ b/resources/views/partials/homepage/header.blade.php @@ -32,8 +32,8 @@