i (am) Blogger and U?

from X-periment to X-perience

Belajar Online: E-learning - Kuis & Soal

"Belajar Online: E-learning - Kuis & Soal", Software/aplikasi e-learning berbasis web yang dapat digunakan oleh pengajar/guru/pembimbing atau perorangan untuk membuat soal/kuis atau per [...]

Aplikasi Web: Custom X

Aplikasi Web Custom X, software berbasis web dinamis dengan fitur utama adalah pembuatan SURVEY dan/atau POLLING dengan jumlah yang tidak dibatasi. Selain itu aplikasi ini juga memiliki [...]

Aplikasi Web: Online Shop PRO 1

Toko Online Pro 1 adalah paket full-features aplikasi toko online yang dapat digunakan untuk menjalankan bisnis Anda secara online. Aplikasi ini memiliki fitur-fitur unggulan dan lengk [...]

Web Profil / Portofolio Basic 1

Web Profil/Portofolio Basic 1, aplikasi/software untuk mengelola portofolio (atau bisa juga dijadikan sebagai photo/image gallery) atau untuk menampilkan profil perusahaan maupun perseo [...]

One-Page Portofolio / Gallery 1

One-Page Portofolio/Gallery adalah paket aplikasi web yang memfasilitasi Anda baik perseorangan maupun korporat yang ingin menampilkan/memajang portofolio/hasil karya/gallery kegiatan/p [...]

Toko Online Barang Digital 1

Toko Online Barang Digital 1 adalah paket full-features aplikasi toko online khusus untuk benda/barang digital seperti aplikasi/software atau ebook pdf, doc dkk yang dapat digunakan unt [...]

[CodeIgniter] Tips Implementasi Clean-URL

Category: Web DevelopmentDate:
Thursday, 18 Dec 2014

Setelah beberapa waktu yang lalu telah dibahas mengenai cara modifikasi slug URL dengan CodeIgniter dan cara membuat slug URL dengan CodeIgniter, kali ini akan dibahas mengenai implementasi pembuatan clean-url dalam aplikasi.

Clean-URL secara mudahnya adalah "menganggap" slug sebagaimana "id" sehingga slug haruslah memiliki sifat yang sama dengan "id" yakni unik (berbeda) untuk setiap posting (sebenarnya tidak terbatas pada posting saja tapi bisa diterapkan untuk tiap "record database" hanya saja khusus untuk kali ini yang dibahas adalah mengenai posting di blog). Hal ini dapat dicapai salah satunya dengan menambahkan angka bila ada slug yang sama.

Misalnya ada sebuah posting memiliki judul halaman "Tips Membuat Blog dengan CodeIgniter" maka slug yang dihasilkan adalah tips-membuat-blog-dengan-codeigniter. Kemudian di waktu yang lain dibuat lagi posting dengan judul yang mirip yakni "[TIPS] Membuat Blog dengan CodeIgniter" yang menghasilkan slug yang sama yakni tips-membuat-blog-dengan-codeigniter. Kondisi ini menyebabkan ketika sebuah halaman diakses via slug "tips-membuat-blog-dengan-codeigniter" maka akan menghasilkan salah satu dari dua posting (posting mana yang akan pertama "terambil" tergantung bagaimana query yang digunakan).

Salah satu cara untuk mengatasi hal ini adalah dengan mengecek terlebih dahulu ketika akan menambahkan sebuah posting yang baru. Apabila tidak ditemukan slug yang sama maka posting disimpan ke dalam database dan kalau terdapat slug yang sama maka dilakukan (ini hanya salah satu cara) penambahan angka di belakang slug terlebih dulu.

Implementasinya dalam CodeIgniter lebih kurang seperti ini. Misalnya nama tabel yang digunakan adalah "tabel_posting" dengan kolom: |id|url_slug|judul|content|tanggal| dan posting yang akan disimpan berjudul "Contoh Slug URL".

[php]
$this->load->helper('string');

$tablename = 'tabel_posting';

$url_slug = 'contoh-slug-url';
$where = array('url_slug' => $url_slug);

if(
$this->db->select('id')
->from($tablename)->where($where)
->get()->result()
){
do {
$url_slug = increment_string($url_slug,'-');
} while(
$this->db->select('id')
->from($tablename)->where($where)
->get()->result()
);
}
[/php]


Hal yang diperhatikan dalam membuat slug adalah baris:
$url_slug = increment_string($url_slug,'-');


Fungsi increment_string() akan menambahkan angka pada bagian akhir string.
Misalnya slug = "contoh-slug-url" ketika dikenakan fungsi increment_string( "contoh-slug-url" , "-" ) akan menjadi "contoh-slug-url-1".
Misalnya slug = "contoh-slug-url-1" ketika dikenakan fungsi increment_string( "contoh-slug-url-1" , "-" ) akan menjadi "contoh-slug-url-2".

Bila yang diinginkan sebagai pemisah adalah underscore maka cukup ganti menjadi:
$url_slug = increment_string($url_slug,'_');


Misalnya slug = "contoh-slug-url" ketika dikenakan fungsi increment_string( "contoh-slug-url", "_" ) akan menjadi "contoh-slug-url_1".
Misalnya slug = "contoh-slug-url_1" ketika dikenakan fungsi increment_string( "contoh-slug-url_1", "_" ) akan menjadi "contoh-slug-url_2".
Misalnya slug = "contoh-slug-url-1" ketika dikenakan fungsi increment_string( "contoh-slug-url-1", "_" ) akan menjadi "contoh-slug-url-1_1".

Ketika melakukan edit ada sedikit perbedaan dengan saat melakukan add yakni pada bagian $where diubah menjadi:
$where = array('url_slug' => $url_slug, 'id !=' => $id_posting_yang_diedit);


Hal ini untuk menangani kasus ketika url slug yang sedang di-edit tidak mengalami perubahan sehingga tidak perlu dikenakan fungsi increment_string();

Mungkin Anda bertanya mengapa format url yang digunakan di blog saya yang sedang Anda baca ini menggunakan slug sekaligus id di dalam url-nya? Salah satu jawabannya adalah karena blog ini dibuat pertama untuk belajar dan dibuat udah bertahun-tahun yang lalu jadi kalau saya ubah struktur url-nya sekarang, maka akan ada "dead-link" bagi blog (atau yang lain) yang sudah ngelink ke blog ini.


No comments...
>> Comments closed. <<