Situs Silsilah Keluarga yang saya kelola sedikit demi sedikit mulai berkembang. Terima kasih untuk para akang, ayi, dan palawargi yang satu demi satu menghubungi saya ingin ikut berkontribusi. Tentunya dengan semakin banyaknya kontributor, data silsilah keluarga kami akan semakin bertambah, lebih lengkap, dan lebih akurat.
Beberapa hal saya lakukan di situs Silsilah Keluarga ini untuk kenyamanan dan kemudahan para pengguna ataupun pengunjung. Salah satunya adalah slug. Ini adalah istilah yang sering kali dipakai untuk menamai URL yang ramah dan gampang dibaca.
Misalnya di blog ini. Alih-alih memiliki URL yang sulit diingat seperti http://priatna.or.id/?p=276 untuk sebuah artikel yang berjudul Saya Keren Banget Deh1, blog ini menampilkan, misalnya, http://priatna.or.id/saya-keren-banget-deh untuk artikel yang sama. Mesin WordPress sudah otomatis membuat slug dari judul artikel yang Anda buat dan tentu saja boleh diubah kemudian.
Bagaimana membuat itu terjadi di situs Silsilah Keluarga?
Menambah Ruas Slug
Selama ini, URL yang muncul ketika memunculkan data seorang anggota keluarga adalah seperti ini silsilah/people.php?person=ID. ID adalah nomor unik yang merujuk spesifik ke data orang tertentu. Tentunya akan lebih manis bila URL-nya dapat tampil seperti ini misalnya: silsilah/person/nama-orang. Lebih mudah diingat dan, konon, lebih ramah terhadap mesin pencari.
Hal pertama yang saya lakukan adalah membuat satu ruas khusus yang memuat informasi slug di tabel data saya. Untuk kasus saya, saya menyimpan data nama, alamat, tempat lahir, tanggal lahir, dan lain-lain di dalam sebuah tabel bernama people. Ke dalam tabel inilah saya tambahkan satu ruas lagi: slug.
Isi ruas slug saya bangun dari ruas name yang berisi nama, dengan menetapkan aturan: setiap spasi diganti dengan tanda hubung dan semua huruf kapital harus diubah menjadi huruf kecil.
Saya jalankan perintah berikut di mysql2:
UPDATE `people` SET slug = REPLACE(LCASE(name), ' ', '-');
Lalu perintah ini untuk membuang tanda titik.
UPDATE `people` SET slug = REPLACE(LCASE(slug), '. ', '');
Ruas slug kini berisi utas (record) seperti “arief-heryana”, “muhammad-iksir-abiyan”, dan lain-lain. Karena nantinya akan dipakai untuk merujuk ke data yang spesifik, ruas ini tentu saja harus unik. Di data yang saya miliki, ada beberapa nama yang sama sehingga slug-nya pun sama. Untung saja kasus ini tidak banyak sehingga saya bisa lakukan pengunikan secara manual: tambahkan “-1″, “-2″, dan seterusnya di belakang slug identik berikutnya.
Kemudian saya harus mengubah perujuk untuk menampilkan data orang, yang tadinya berdasarkan ID, sekarang harus berdasarkan slug. Jadi, kode permintaan pada URL saya ubah dari silsilah/people.php?person=ID menjadi silsilah/people.php?person=slug. Ini artinya saya harus pula mengubah beberapa baris kode di hampir semua berkas php saya3.
.htaccess
Setelah data orang dapat terpanggil dengan benar menggunakan perujuk slug, saatnya mengeluarkan senjata berikutnya: berkas .htaccess. Berkas ini digunakan oleh server Apache untuk mengatur dan merekayasa permintaan terhadap sebuah direktori di suatu situs web.
Dalam kasus saya, agar pengunjung situs dapat menggunakan alamat silsilah/person/ini-nama-saya, alih-alih silsilah/people.php?person=ini-nama-saya untuk mengakses data seseorang, saya membuat satu berkas .htaccess4 yang disimpan di folder silsilah. Isinya kurang lebih ini:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /silsilah/
RewriteRule ^person/(.+)$ /silsilah/people.php?person=$1 [NC]
Baris di atas akan otomatis mengantar setiap permintaan terhadap http://priatna.or.id/silsilah/person/nama-orang ke http://priatna.or.id/silsilah/people.php?person=nama-orang tanpa disadari oleh pengunjung.
Sudah selesaikah? Belum! Sedikit lagi.
Slug Harus Unik dan Sederhana
Seperti sempat disinggung sebelumnya, ruas slug dibuat untuk mengidentifikasi data individu anggota keluarga—karenanya dia harus unik. Selain unik, slug juga harus sederhana. Saya ingin, hanya karakter abjad dan tanda hubung yang diperkenankan. Misalnya saja, slug untuk nama Rihhadatul ‘Aisyi akan berisi rihhadatul-aisyi tanpa tanda petik.
Bagaimana menjaga keunikan dan kesederhanaan ini?
Membangun slug dapat diatur dengan beberapa baris kode php berikut:
$slug = strtolower($name); $slug = ereg_replace('([[:space:]]|-)+', '-', $slug); $slug = ereg_replace('([^a-z0-9-]|-+$|^-+)', '', $slug);
Variabel $name berisi nama orang.
Baris pertama akan mengambil nama orang yang akan dibuatkan slug dan mengubah semua karakternya menjadi huruf kecil. Baris kedua akan mengubah spasi menjadi tanda hubung. Bila ada spasi atau tanda hubung ganda, dia pun akan diubah menjadi tanda hubung. Di baris ketiga, ada 3 jenis yang akan dibuang: semua karakter selain huruf, angka, dan tanda hubung; tanda hubung di awal; dan tanda hubung di akhir.
Setelah mendapatkan slug, saya harus menguji apakah slug ini unik? Bila ternyata sama dengan slug yang sudah ada, di belakang slug orang tersebut akan ditambahi “-1″ atau “-2″ tergantung banyaknya slug yang identik. Baris kodenya kira-kira seperti ini.
$query = "SELECT count(*) AS number FROM people WHERE slug = '".$slug."' OR slug REGEXP '^".$slug."-[0-9]'"; $result = mysql_query($query); while ($row = mysql_fetch_array($result)) $total = $row["number"]; if ($total > 0) $slug = $slug."-".$total;
Baris-baris kode di atas akan memastikan slug yang dibuat adalah unik untuk setiap individu. Jika ada 3 nama Dadang, slug masing-masing adalah dadang, dadang-1, dan dadang-2.
Ketika ada pengguna yang memasukkan data anggota keluarga, ruas untuk slug tidak saya ditampilkan. Isi ruas ini akan otomatis dibangun dari nama anggota keluarga yang dimasukkan. Tapi ketika pengguna menyunting data seorang anggota keluarga yang sudah ada, isi ruas slug akan ditampilkan dan boleh diubah. Jika slug muhammad-haikal-ali-akbar-darul-haq dirasa terlalu panjang, pengguna dapat mengubahnya menjadi lebih ringkas seperti haikal-ali-akbar, misalnya. Setelah perubahan, slug ini akan tetap merujuk pada nama yang sama.
Selesai sudah. Mudah-mudahan tidak banyak bugs yang muncul akibat perubahahan ini. Dan kalau ada, saya akan senang jika diberi tahu.
Tags: mysql, nice url, php, seo, silsilah, slug, tips, tutorial
Entri yang Mungkin Terkait
- Silsilah Keluarga
- Silsilah Keluarga: Desain Ulang
- ZOOOF: Jejaring Keluarga Online
- Lebaran dan Pohon Keluarga
- Macro Excel Pengganti VLookup
Komentar. Silakan berikan komentar Anda. Beberapa tag HTML diperbolehkan. Anda juga dapat mendaftar di Gravatar untuk menampilkan foto Anda.
-
kang, situsnya oke banget…
Aku jadi pengen berguru langsung ama akang Prie, boleh ya kangAku pengen kopi darat ah, biar ga penasaran ama kang Priatna
Ok kang, aku tunggu balasanya
nuhun
athar
-
Nice post
Wah, Artikelnya dari susah jadi terkesan mudah
Enak juga bacanyaJadi bookmark neh :-) thanks yeah
-
assalamualaikum,
kang..punteun….saya mo tanya gimana caranya buat website seperti yang punya akang…soalnya saya liat tampilan website akang ini sebenarnya sederhana tapi sangat bermutu….haturnuhun pisan ieu kang…
hapunteun deui kang…. :) lamun tos aya jawaban ti akang dan jawabanna panjang pisan, via email wae kang :)…ieu alamat email abdi… bobyherawan@ymail.com
haturnuhun kangwassalam…









9 comments
Comments feed for this article
Trackback link: http://priatna.or.id/2007/11/14/membuat-slug-url-yang-sedap-dipandang/trackback/