Cara mudah membuat fungsi Unique Slug pada codeigniter

Membuat URL demi meningkatkan SEO itu ternyata penting, jika suatu web/blog yang kita bangun tersebut ingin dikenal oleh publik karena kita publikasikan. Dalam kasus ini adalah membuat URL (slug) unik pada Codeigniter. Beberapa cara singkat akan diulas dalam artikel ini.

Intro

Tidak perlu menguasai ilmu tinggi, kita hanya perlu sedikit logika saja agar URL yang kita buat menggunakan CI lebih unik. Dan cara yang dapat kita terapkan semua dapat kita ambil dalam dokumentasi CI tersebut. Ada beberapa cara yang dapat saya ulas untuk Anda, dan cara-cara ini juga yang sering saya terapkan pada banyak projek web saya.

The Steps

Agar URL menjadi cantik, kita gunakan helper url_title() yang telah disediakan CI. Fungsi ini sangat membantu, jadi kita tak perlu lagi membuat fungsi baru agar URL cantik.

Encrypt Slug

Cara ini paling dasar, saya sering menggunakan cara ini karena malas otak-atik terlalu dalam. Saya biasa menyimpan slug dengan cara ini. Efektif dan sangat mudah. Caranya dengan menggunakan fungsi dari PHP md5(), langkahnya menyimpannya sebagai berikut:


$slug = md5($id);

Cara tersebut langsung membuat unique slug asal $id yang kita berikan juga unik. Tapi cara ini sangat tidak rekomen untuk digunakan pada web publik karena sangat tidak SEO. Tenang Google saja menggunakan random string kok, dan Twitter menggunakan random angka. Sekali lagi, cara ini sangat ampuh membuat slug yang unik.

Combine Encrypted Slug

Dengan cara kombinasi baseUrl dengan md5() tampaknya bagus, logikanya md5() akan selalu memberikan nilai yang unik, tapi ini terlalu panjang dan kita dapat memotongnya agar lebih pendek. Eh, jangan kuatir kita masih dapat mengakalinya dengan fungsi yang ada random_string(). Yup dengan begitu kita dapat membuat slug unik pada tiap pos. Caranya sebagai berikut:


function unique_slug($title) {
    $this->load->helper(array('string', 'url'));

    $unique = random_string('alnum', 5); // 5 karakter random string
    $url_title = url_title($title); // membuat URL lebih cantik

    $slug = $url_title . '-' . $unique;
    return $slug;
}

Penjelasannya seperti ini, fungsi url_title() akan menjadikan URL makin cantik dengan membuang karakter simbol dan spasi menjadi dash atau underscore atau tergantung kita mengaturnya. Sedangkan random_string() akan menampilkan kata acak dengan jumlah karakter tertentu.

Increment Slug

Sedikit bermain dengan database, kita wajib cek tentang ketersediaan slug tertentu, dan selanjutnya jika sudah ada melakukan increment pada akhir slug, dan berikut adalah kodenya.


function unique_slug($slug) {
    $q = $this->db->like('slug', $slug, 'both')->get('articles');

    if($q->num_rows() > 0) {
        $l = $q->last_row();
        $slug = increment_string($slug, '-', $q->num_rows() + 1);
    }
    return $slug;
}

Subs ID Slug

Cara ini mungkin diluar nalar, sedikit bayangan saja, jika cara increment mungkin cara yang efektif menurutku. Dan cara ini berhasil menciptakan unique slug yang diharapkan. Mungkin cara yang terakhir ini sedikit sama namun berbeda, dimana hasil increment tersebut diganti dengan ID terakhir pada tabel terkait.


function no_duplicate_slug($slug, $table, $primary = 'id') {
    $q = $this->db->like('slug', $slug, 'both')
                  ->order_by($primary, 'ASC')
                  ->get($table);

    if($q->num_rows() > 0) {
        $l = $q->last_row();
        $slug = $slug . '-' . $l->$primary;
    }
    return $slug;
}

Penjelasannya begini,
dengan memasukkan slug yang dimaksud, maka akan dicheck keberadaannya didalam database dengan tabel $table. Jika data pada database tersedia maka akan membuat slug baru dengan angka dibelakang slug tersebut sesuai dengan $primary tabel tersebut.

Itu saja skrip membuat link unik sederhana, semoga bermanfaat dan semoga sukses.

Toto Prayogo

Artikel Terkait

Berlangganan pos via email

Powered by FeedBurner