PHP Function untuk memformat SLUG

Slug atau url key, biasanya digunakan untuk alamat blog yang SEO Friendly. Namun bagaimanakan implementasi di PHP nya?
1643  
       

Slug atau url key, biasanya digunakan untuk alamat blog yang SEO Friendly. Tapi, secara koding ini lumayan rada menganggu. Karena sebetulnya tidak penting, namun sering diminta. Jadi bagaimana kodenya? mari kita lihat selengkapnya.

Alasan Kenapa harus Sluggy?

Selain SEO, penamaan file, halaman atau url key harus sluggy karena itu bisa digunakan sebagai identifier unik didatabase juga. Sebagai identifier unik, slug bisa di lookup sehingga halaman yang ditampilkan mudah dibaca jika dibandingkan dengan hanya menampilkan ID nya saja.

Penerapan Slug

Selain URL Key, penerapan slug itu banyak. Seperti file name ketika upload, url key, membuat url profile, dan hal-hal bersifat public lainnya.

Kode Sumber Slug Converter

Berikut ini adalah potongan kode (Code Snippet) dari fungsi slugify.

function slugify($text){
  // replace non letter or digits by -
  $text = preg_replace('~[^\pL\d]+~u', '-', $text);

  // transliterate
  $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

  // remove unwanted characters
  $text = preg_replace('~[^-\w]+~', '', $text);

  // trim
  $text = trim($text, '-');

  // remove duplicate -
  $text = preg_replace('~-+~', '-', $text);

  // lowercase
  $text = strtolower($text);
  
  return $text
}

 

ID VS Slug

Ketika dengan memnggunakan ID, sudah jelas biasanya sangat sulit dihafal oleh pengguna. Sementara dengan slug, mungkin ada beberapa pengguna mengingatnya jadi tidak terlalu susah. Bahkan untuk sebagian kasus, url dengan slug lebih banyak diklik jika dibandingkan dengan ID. Karena mungkin user lebih percaya, karena potongan keyword titlenya ada didalam slugnya. Mari kita lihat skema url key dibawah ini.

namasitus/PAGEID
namasitus/produk/kategori/produk-ini-warna-hijau-dan-tahan-lama

 
Sepintas jika dilihat, tentu akan lebih mudah terbaca yang baris ke 2. Ini karena url key lebih human friendly. Tapi cukup mengganggu proses development dan kualitas dari apps yang dibangun.

Kelemahan Slug

Dengan menggunakan slug, kemungkinan url tabrakan itu sangat tinggi. Karena, url yang satu dengan lainya mungkin saja identik atau bahkan sama persis jika membahas bahasan yang sama. Hal ini, akan terjadi ketika artikelnya sudah banyak namun membahas tema yang cukup homogen. Hal ini juga dibahas di aritkel lainnya tentang Slug.

Similiar slug dan sub slug

Similiar slug dan sub slug ini bisa identik. Contoh, ada sebuah kategori produk bernama Kerudung, kemudian ada produk bernama kerudung juga. Anggap saja dalam kasus ini hanya ada satu item kerudung jadi tidak bisa dibedakan.
Coba lihat contoh skema ini:

nama breadcrumb:  PRODUK          ->  KERUDUNG                     ->  KERUDUNG
jenis:            (kategori)      ->  (kategori)                   ->  (nama produk)
slug:             namsitus/produk -> namasitus/produk/kerudung/    ->  namasitus/produk/kerudung/kerudung

 

Bagaimana jika client minta format url yang seperti ini namasitus/kerudung. Apa yang terjadi? Apakah slug tersebut akan menuju ke produk atau ke kategori produk? Mari kita lihat pemaparannya.

Telaah berdasarkan teori database

Kalau secara teori database, dia akan melookup secara random kalau kita tidak sediakan ORDER BY. Jika mau tidak mau harus disediakan ORDER BY untuk menjamin skala prioritas lookup.

Solusi

Jadi untuk konten yang sudah cukup lumayan besar atau banyak, dibutuhkan roadmap yang tersusun rapi sehingga conten writer maupun admin dapat memberikan kontribusi yang baik. Dengan konten yang baik dan perencaan yang matang, tabrakan antar slug bisa dihindari.

Menghindari Similiar slug

Untuk menghindari hal tersebut ada beberapa siasat, yaitu:

  • Menambahkan skala prioritas dengan membubuhkan ORDER BY di SQL atau di bahasa yang sejenis.
  • Tambahkan varian produk sejenis semisal kerudung ABC, atau
  • Hilangkan kategori tersebut, ganti dengan yang lebih universal, contoh kerudung diganti jadi perlengkapan muslimah.

Demikian Semoga Membantu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>