i (am) Blogger and U?

from X-periment to X-perience

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

One-Page Portofolio / Gallery 2

One-Page Portofolio / Gallery 2 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini a [...]

Template: ANIME-MAX

ANIME-MAX adalah HTML template (menggunakan Bootstrap 3.3.6) yang ditujukan untuk situs yang menyediakan link download atau nonton online video dalam kasus ini contohnya adalah anime ta [...]

Aplikasi Web: Custom Form

Aplikasi Web Custom Form, software berbasis web dengan fitur utama adalah pembuatan DYNAMIC FORM (form web dinamis). Form ini terdiri dari berbagai jenis field, seperti field input text [...]

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

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

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