i (am) Blogger and U?

from X-periment to X-perience

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

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 2

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

Aplikasi Web: URL Shortener Complete 2

URL Shortener Complete 2 adalah aplikasi yang membantu Anda untuk menjalankan situs/web yang memiliki fasilitas URL shortener. Pemendek URL sesuai namanya berfungsi untuk memangkas alam [...]

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

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

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