i (am) Blogger and U?

from X-periment to X-perience

Web Profil / Portofolio Basic 2

Web Profil/Portofolio Basic 2 memiliki fitur-fitur yang sama persis dengan Web Profil/Portofolio Basic 1 tapi dengan theme/template yang berbeda.

Online Shop Basic 2

Online Shop Basic 2 adalah paket minimalis aplikasi toko online instan yang dapat digunakan untuk menjalankan bisnis secara online. Aplikasi ini adalah aplikasi toko online yang "sudah [...]

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: WebReview-Series 2

Web Review-Series 2 memiliki fitur-fitur yang sama persis dengan Web Review-Series 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini adalah theme yang respons [...]

Online Shop Basic 1

Online Shop Basic 1 adalah paket minimalis aplikasi toko online instan yang dapat digunakan untuk menjalankan bisnis secara online. Aplikasi ini adalah aplikasi toko online yang "sudah [...]

Aplikasi Web: WebReview-Series 1

Web Review-Series 1 adalah paket aplikasi web yang memfasilitasi Anda yang ingin membuat situs yang berisi review dari berbagai hal. Review tentang suatu produk, Review tentang suatu te [...]

2014
18Des

[CodeIgniter] Tips Implementasi Clean-URL

Post category: Web Development

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. <<