Rabu, 17 April 2013

Membuat Sendiri Script PHP Menampilkan Artikel Terkait


Membuat Sendiri Script PHP Menampilkan Artikel Terkait


 

Apakah Anda sedang belajar membuat script CMS sendiri? Jika ya,
rasanya belum lengkap deh tanpa fitur yang menampilkan daftar artikel
yang terkait dengan sebuah artikel yang sedang dibaca oleh pengunjung
blog. Dengan adanya fitur ini, pengunjung akan diarahkan ke artikel
lain yang masih berhubungan dengan artikel yang sedang dibacanya
sehingga bisa menambah wawasan lebih bagi mereka. Sedangkan efek
positif bagi Anda sebagai pemilik situs adalah meningkatnya impression
atau page view situs Anda, dan juga membuat visitor lebih tahan
berlama-lama untuk menjelajahi situs Anda. Apabila Anda menggunakan
WordPress atau blogging software yang lain, maka fitur untuk
menampilkian artikel terkait ini bisa langsung ditanam menggunakan
plugin yang disediakan, misalnya YARPP. Namun, bagi Anda yang membuat
CMS sendiri tentunya hal ini menjadi tantangan tersendiri. Oleh karena
itu dalam artikel ini, saya akan mencoba memaparkan ide untuk membuat
modul script yang menampilkan artikel terkait dengan PHP.


Misalkan kita mempunyai CMS dengan struktur tabel database untuk
menyimpan data artikel seperti di bawah ini:
view sourceprint?
1.CREATE TABLE `artikel` (
2.`id` int(11) AUTO_INCREMENT,
3.`judul` varchar(100),
4.`konten` text,
5.`tanggal` date,
6.PRIMARY KEY (`id`)
7.);

dan andaikan kita sudah memiliki data artikel sbb: Selanjutnya, kita
buat script untuk menampilkan detail isi artikelnya berdasarkan id
artikel nya. artikel.php
view sourceprint?
01.<?php
02.// koneksi ke database
03.mysql_connect('localhost', 'username', 'password');
04.mysql_select_db('database');
05.
06.// membaca id artikel
07.$idartikel = abs((int) $_GET['id']);
08.
09.// membaca data detail artikel berdasarkan id artikel
10.$query = "SELECT * FROM artikel WHERE id = '$idartikel'";
11.$hasil = mysql_query($query);
12.$data  = mysql_fetch_array($hasil);
13.?>
14.
15.<html>
16.<head>
17.<title><?php echo $data['judul']?></title>
18.</head>
19.<body>
20.<h1><?php echo $data['judul']?></h1>

21.<small><em>Tanggal publikasi: <?php echo
$data['tanggal']?></em></small>
22.
23.<div>
24.<?php echo $data['konten']?>
25.</div>
26.
27.<div>
28.<h3>Artikel Terkait</h3>
29.<?php
30.include "function.php";
31.artikelTerkait($idartikel);
32.?>
33.</div>
34.</body>
35.</html>

Script di atas digunakan untuk menampilkan konten dari sebuah
artikel berdasarkan id artikelnya, dimana untuk menampilkan konten
suatu artikel menggunakan URL http://namahost/artikel.php?id=…
Perhatikan perintah
view sourceprint?
1.$idartikel = abs((int) $_GET['id']);

perintah tersebut digunakan untuk mencegah SQL injection melalui GET
method sebagaimana yang dulu pernah saya tulis artikelnya. Jika kita
perhatikan dari script di atas, maka di bawah isi artikelnya ada bagian
sbb:
view sourceprint?
1.<div>
2.<h3>Artikel Terkait</h3>
3.<?php
4.include "function.php";
5.artikelTerkait($idartikel);
6.?>
7.</div>

Bagian tersebut digunakan untuk menampilkan daftar artikel yang
terkait dengan artikel yang sedang dibaca. Untuk menampilkan daftar
artikel yang terkait dengan artikel ber ID $idartikel, saya menggunakan
sebuah function dengan nama artikelTerkait($idartikel) dimana
$idartikel adalah parameternya. Function ini saya letakkan di file
function.php yang terpisah dari script artikel.php. Kalaupun Anda
meletakkan functionnya dalam file yg sama dengan artikel.php juga
tidak ada masalah Selanjutnya kita tinjau apa isi dari function
artikelTerkait(). Dalam contoh ini, keterkaitan artikel yang dimaksud
di sini ditinjau dari kemiripan judul artikelnya. Adapun idenya
adalah, kita baca semua judul artikel yang ada dalam database kecuali
artikel yang menjadi acuan (artikel ber ID $idartikel). Selanjutnya
untuk semua judul artikel ini, kita lihat kemiripannya dengan judul
dari artikel yang ber ID $idartikel ini. Kita bisa melihat kemiripan
dari judul artikel ini menggunakan function similar_text() yang pernah
saya bahas di artikel lain tentang uji kemiripan teks. Kemudian,
karena hasil dari penggunakan similar_text() ini berupa angka dalam
bentuk prosentase kemiripan, maka sebaiknya kita membuat semacam batas
minimal prosentase atau threshold, yang nantinya digunakan untuk
memberi batas minimal kemiripannya. Sebagai contoh misalkan daftar
artikel terkait yang ditampilkan hanya artikel yang memiliki tingkat
kemiripan 50% ke atas. Hal ini berfungsi untuk memfilter mana artikel
yang benar-benar mirip atau tidak. Artikel yang jauh dari mirip, akan
memiliki prosentase kemiripan kecil. Tapi besar kecilnya threshold ini
sepenuhnya terserah Anda, karena Andalah yang menentukan. Hal yang
menjadi pemikiran berikutnya adalah, bagaimana jika jumlah artikel
yang terkait itu ada banyak, misalkan ada 100 buah? tentunya tidak
mungkin kita tampilkan semua karena halaman page artikelnya bisa jadi
penuh dengan judul-judul artikel sehingga tidak menarik bagi
pengunjung. Oleh karena itu kita sebaiknya batasi jumlah artikel
terkaitnya. Untuk mengimplementasikan hal ini, setiap judul artikel yang
kemiripannya di atas threshold, maka kita simpan ke dalam sebuah
array. Selama jumlah artikel dalam array tersebut belum memenuhi batas
maksimum jumlah artikel nya, maka judul-judul terkait itu bisa
ditambahkan dalam array. Setelah proses ini selesai, barulah kita
tampilkan list judul artikel terkaitnya yang ada dalam array tersebut.
Nah… dari ide di atas, kita bisa membuat scriptnya sbb: function.php
view sourceprint?
01.<?php
02.
03.// koneksi ke database
04.mysql_connect('localhost', 'username', 'password');
05.mysql_select_db('database');
06.
07.function artikelTerkait($id)
08.{
09.// batas threshold 40%
10.$threshold = 40;
11.// jumlah maksimum artikel terkait yg ditampilkan 3 buah
12.$maksArtikel = 3;
13.
14.// array yang nantinya diisi judul artikel terkait
15.$listArtikel = Array();
16.
17.// membaca judul artikel dari ID tertentu (ID artikel acuan)

18.// judul ini nanti akan dicek kemiripannya dengan artikel yang
lain
19.$query = "SELECT judul FROM artikel WHERE id = '$id'";
20.$hasil = mysql_query($query);
21.$data  = mysql_fetch_array($hasil);
22.$judul = $data['judul'];
23.
24.// membaca semua data artikel selain ID artikel acuan
25.$query = "SELECT id, judul FROM artikel WHERE id <> '$id'";
26.$hasil = mysql_query($query);
27.while ($data = mysql_fetch_array($hasil))
28.{

29.// cek similaritas judul artikel acuan dengan judul artikel
lainnya
30.similar_text($judul, $data['judul'], $percent);
31.if ($percent >= $threshold)
32.{
33.// jika prosentase kemiripan judul di atas threshold
34.if (count($listArtikel) <= $maksArtikel)
35.{

36.// jika jumlah artikel belum sampai batas maksimum, tambahkan ke
dalam array

37.$listArtikel[] = "<li><a
href='artikel.php?id=".$data['id']."'>".$data['judul']."</a></li>";
38.}
39.}
40.}
41.
42.// jika array listartikel tidak kosong, tampilkan listnya
43.// jika kosong, maka tampilkan 'tidak ada artikel terkait'
44.if (count($listArtikel) > 0)
45.{
46.echo "<ul>";
47.for ($i=0; $i<=count($listArtikel)-1; $i++)
48.{
49.echo $listArtikel[$i];
50.}
51.echo "</ul>";
52.}
53.else echo "<p>Tidak ada artikel terkait</p>";
54.}
55.?>
Mudah bukan membuatnya? Hasil dari script artikel.php?id=… jika dijalankan di browser adalah sebagai berikut: Nah… selanjutnya Anda bisa kembangkan sendiri script di atas, misalnya jika di dalam CMS Anda ada semacam kata kunci atau tag, maka artikel terkait bisa berdasarkan tag tersebut atau kategori artikel.

2 komentar:

  1. manfaat bnget brow..thanks dah berbagi

    BalasHapus
  2. sangat bermanfaat makasih banyak..

    http://landongobatherbal.com/obat-herbal-kanker-otak/

    BalasHapus

komentar yang baik dan tidak engandung unsur hina, fitnah atau apapun :)

sidebarads

secondrightads

dailyvid

footerads

apakah artikel kami bermanfaat ?

Pages

Powered By Blogger

Translate

Pengikut

windows 7 secret