Codeigniter 4 – Menampilkan Data Berita

بِسْمِ اللَّهِ Mudah-mudahan tutorial Codeigniter 4 – Menampilkan Data Berita ini bermanfaat

Tutorial ini bisa dikatakan bagian ke 4 dari CRUD yaitu menampilkan data yang kebetulan data yang diolah disini adalah data berita. Data berita ini biasanya sering ditampilkan pada website company profile, pendidikan dan website-website yang lainnya.

Sebagai informasi berikut ini kolom-kolom yang saya gunakan id, username, title, slug, body, publish_date, image. Mungkin kolom-kolom disini bisa ditambah dan dikurangi disesuaikan dengan kebutuhan Anda.

Persiapan Codeigniter 4 – Menampilkan Data Berita

Untuk melanjutkan tutorial pastikan sudah:

Minimal sudah mengerjakan CRUD Bagian 1 pada tutorial sebelumnya

Pertama

Mengupdate fungsi getLatestNews yang ada di NewsModel dengan script berikut. Fungsi untuk menghasilkan 3 (tiga) data berita yang di publis terakhir.

    public function getLatestNews()
    {
        return $this->asObject()
                    ->orderBy('publish_date', 'desc')
                    ->findAll(3);
    }

Kedua

Mengupdate fungsi index pada controller \app\Controllers\Home.php dengan menambah data berita terakhir. Yang paling atas setelah namespace tambahkan script berikut

use App\Models\NewsModel;

Selanjutnya tambahkan script sebagai berikut

    public function index()
    {
        $model = new NewsModel();
        $data['news'] = $model->getLatestNews();
        foreach ($data['news'] as $key => $row) {
			$dataIsiNews["row"] = $row;
			$data["row".$row->id] = view('news/row_last_news', $dataIsiNews);
		}            
        $data['title'] = 'Halaman Utama';
        return view('index', $data);
    }

Ketiga

Tambah file view row_last_news.php dengan lokasi \app\Views\news\. File ini bisa dikatakan sebagai template untuk tiap data berita. Disini hanya menampilkan data berita per barisnya berdasarkan kriteria yang ada yaitu 3 berita terakhir di publis.

Seperti biasa berita yang tampil, tidak mungkin akan tampil semua isi berita. Disini saya membatasinya hanya 30 kata per berita. Nah disini saya menggunakan fungsi explode yang mungkin sudah sering Anda gunakan. Tapi untuk yang berita kurang dari 30, ditampilkan semua apa adanya.

explode berfungsi memecah string menjadi array berdasarkan karakter tertentu

Contoh : $enews = explode(” “, $row->body);
Artinya isi dari $row->body dipecah menjadi $enews[0], $enews[1] dan seterusnya

$enews = explode(” “, “explode berfungsi memecah string menjadi array”);
$enews[0]=”explode”, $enews[1]=”berfungsi”, $enews[2]=”memecah”, $enews[3]=”string”, $enews[4]=”menjadi”, $enews[5]=”array”

Scriptnya sebagai berikut

        <div class="col-lg-4 mb-4">

            <!-- Illustrations -->
            <div class="card shadow mb-4">
                <div class="card-header py-3">
                    <h6 class="m-0 font-weight-bold text-primary"><?= $row->title; ?></h6>
                </div>
                <div class="card-body">
                    <div class="text-center">
                        <img class="img-fluid px-3 px-sm-4 mt-3 mb-4" style="width: 25rem;"
                            src="<?= base_url() ?>/images/news/<?= $row->image; ?>" alt="...">
                    </div>
                    <?php 
                    $enews = explode(" ", $row->body);
                    if (count($enews) > 30) {
                        for ($i=0; $i < 30; $i++) { 
                            echo $enews[$i]." ";
                        } 
                    } else {
                        echo $row->body;
                    }
                    ?>
                    <a href="<?= base_url() ?>/news/<?= $row->slug; ?>" class="btn btn-primary btn-icon-split">
                        <span class="icon text-white-50">
                            <i class="fas fa-flag"></i>
                        </span>
                        <span class="text">Lihat Berita</span>
                    </a>
                </div>
            </div>
        </div>

Update view \app\Views\index.php dengan script berikut

<?= $this->extend('template/index') ?>            

<?= $this->section('page-content') ?>                                
    <div class="row">
        <?php
            foreach($news as $row):
                $rowNews = "row".$row->id;
                echo $$rowNews;
            endforeach; 
        ?>
    </div>
    <div class="row">        
        <a href="<?= base_url() ?>/news/index_all" class="btn btn-primary btn-icon-split btn-block">
            <span class="icon text-white-50">
                <i class="fas fa-flag"></i>
            </span>
            <span class="text">Lihat Semua Berita</span>
        </a>
    </div>

<?= $this->endSection() ?>  

Akhirnya

Mudah-mudahan tidak ada error. Kurang lebih tampilannya akan seperti ini

Demikian tutorial Codeigniter 4 – Menampilkan Data Berita di Halaman Utama. Silakan dilanjutkan dan dikembangkan lagi.

Untuk contohnya bisa dilihat di https://demo.belajardisiniaja.com/

Mudah-mudahan tutorial ini bermanfaat.

Share

You may also like...

3 Responses

  1. denyaldy says:

    mohon dibuatkan tutor log aktifitas create delete update waktu(time) by user/admin login misal ambil log aktifitas dari tabel barang terimakasih sebelumnya pakai ci4
    dan tutor last login pakai library myth/auth hehe maaf banyak permintaan saya kebingungan di metode 2 ini

Leave a Reply

Your email address will not be published. Required fields are marked *