i (am) Blogger and U?

from X-periment to X-perience

Starter: Anime/Movie Sharing

Produk yang satu ini adalah aplikasi web yang dikhususkan bagi Anda yang ingin memiliki situs/web yang dengan fasilitas untuk menampilkan anime/movie dan dapat ditonton oleh para pengun [...]

Aplikasi Web: Forum Mirip Twitter

Aplikasi ini merupakan aplikasi layaknya forum pada umumnya. Hal spesial dari aplikasi ini adalah adanya tambahan yang mirip dengan Twitter. Fitur-fitur yang dimiliki antara lain: foll [...]

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

Profile / Portofolio Pro 2

Aplikasi Profil / Portofolio Pro 2, software berbasis web untuk pengelolaan portofolio atau untuk menampilkan profil baik perusahaan maupun perseorangan. Selain itu software ini dapat p [...]

One-Page Portofolio / Gallery 3

One-Page Portofolio / Gallery 3 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 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 [...]

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