TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP

Membuat Sendiri Script PHP Menampilkan Artikel Terkait


May 26th, 2012 | by rosihanari | Cetak Artikel Cetak Artikel

GampSMS SMS Gateway

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:

CREATE TABLE `artikel` (
  `id` int(11) AUTO_INCREMENT,
  `judul` varchar(100),
  `konten` text,
  `tanggal` date,
  PRIMARY KEY (`id`)
);

dan andaikan kita sudah memiliki data artikel sbb:

Selanjutnya, kita buat script untuk menampilkan detail isi artikelnya berdasarkan id artikel nya.

artikel.php

<?php
// koneksi ke database
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');

// membaca id artikel
$idartikel = abs((int) $_GET['id']);

// membaca data detail artikel berdasarkan id artikel
$query = "SELECT * FROM artikel WHERE id = '$idartikel'";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);
?>

<html>
    <head>
       <title><?php echo $data['judul']?></title>
    </head>
    <body>
        <h1><?php echo $data['judul']?></h1>
        <small><em>Tanggal publikasi: <?php echo $data['tanggal']?></em></small>

        <div>
            <?php echo $data['konten']?>
        </div>

        <div>
           <h3>Artikel Terkait</h3>
           <?php
             include "function.php";
             artikelTerkait($idartikel);
           ?>
        </div>
    </body>
</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

$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:

<div>
  <h3>Artikel Terkait</h3>
  <?php
    include "function.php";
    artikelTerkait($idartikel);
  ?>
</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

<?php

// koneksi ke database
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');

function artikelTerkait($id)
{
    // batas threshold 40%
    $threshold = 40;
    // jumlah maksimum artikel terkait yg ditampilkan 3 buah
    $maksArtikel = 3;

    // array yang nantinya diisi judul artikel terkait
    $listArtikel = Array();

    // membaca judul artikel dari ID tertentu (ID artikel acuan)
    // judul ini nanti akan dicek kemiripannya dengan artikel yang lain
    $query = "SELECT judul FROM artikel WHERE id = '$id'";
    $hasil = mysql_query($query);
    $data  = mysql_fetch_array($hasil);
    $judul = $data['judul'];

    // membaca semua data artikel selain ID artikel acuan
    $query = "SELECT id, judul FROM artikel WHERE id <> '$id'";
    $hasil = mysql_query($query);
    while ($data = mysql_fetch_array($hasil))
    {
        // cek similaritas judul artikel acuan dengan judul artikel lainnya
        similar_text($judul, $data['judul'], $percent);
        if ($percent >= $threshold)
        {
            // jika prosentase kemiripan judul di atas threshold
            if (count($listArtikel) <= $maksArtikel)
            {
               // jika jumlah artikel belum sampai batas maksimum, tambahkan ke dalam array
               $listArtikel[] = "<li><a href='artikel.php?id=".$data['id']."'>".$data['judul']."</a></li>";
            }
        }
    }	

    // jika array listartikel tidak kosong, tampilkan listnya
    // jika kosong, maka tampilkan 'tidak ada artikel terkait'
    if (count($listArtikel) > 0)
    {
        echo "<ul>";
        for ($i=0; $i<=count($listArtikel)-1; $i++)
        {
            echo $listArtikel[$i];
        }
        echo "</ul>";
    }
    else echo "<p>Tidak ada artikel terkait</p>";
}
?>

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. Bisa juga, list artikel terkait yang muncul disorting dahulu dengan tingkat kemiripan paling tinggi terletak di urutan paling atas misalnya.

Selamat mencoba… :-)


Baca Juga Artikel Terkait
Plugin WordPress Untuk Menampilkan Artikel Terkait
Membuat Sendiri Script Excerpt (Cuplikan) Artikel Ala WordPress
YARPP, Plugin WordPress Alternatif Untuk Menampilkan Artikel Terkait
Plugin WordPress untuk Menampilkan Judul Artikel dalam Kategori yang Sama
Membuat Script PHP Untuk Auto Published Artikel Dengan Cron Jobs


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas


Kata kunci: artikel terkait - php script - related post - script php - tutorial php -


Ada 21 komentar dalam artikel ini.



  1. hadi says:

    sip Joss mas tutornya…

    ijin sedot scriptnya mau ta terapin di website ku yo mas…

    salam sukses yo mas…

    btw oleh dolan2 nek omahmu ra mas… ak sering nek Jaten lhoo…

  2. tIKET dISKUS says:

    Thanks atas ilmunya. O ya ane mau minta tolong nih. Bisa bikin contoh script php untuk pencarian tiket pesawat online dengan menggunakan API code dari TIKET.COM gak bro?

    Tolong kabari ane ya kalo ada scriptnya. Thx sbelumnya.

  3. abdillah says:

    wah hebat pak ari..
    mau nanya ni pak,kalo itu kan pake link yg dinamis kaya id=1
    kalo bikin link yang kaya di atas gmn pak?
    http://blog.rosihanari.net/membuat-sendiri-script-php-menampilkan-artikel-terkait/
    maksudnya biar seo friendly gtu lho pak..
    Terima kasih banyak

  4. aulia says:

    kak… aku nyoba kok gak keluar ya judul, tanggal ma isi kontennya???
    cuma keluar tulisan “artikel terkait, tidak ada artikel terkait”
    gimana nih kaa? apa nya ya yang salah?

  5. halid says:

    Trima kasih atas ilmunya..
    Kalau buat artikel terkait per kategori gimana yaaa…

  6. kocu says:

    selamat malam pak. saya sudah coba dan berhasil tetapi ada masalah krn pada bagian ini $idartikel = abs((int) $_GET['id']); saya ubah menjadi $title = $_GET['title']); untuk artikel terkait sdh muncul tetapi ketika kursor disorot pada artikel terkait koq mengarah ke url artikel yg sedang dilihat bukan ke url dari artikel terkait. mohon bantuan pak ari …

  7. harry says:

    itu klo $persen isinya apa pa

  8. Mas Rosihan…
    Untuk product yang related dengan post artikel bisa gak mas?
    Udah coba otak atik, gak muncul2 nih



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*