Etiket Bulutu Yapalım (wp tarzı)

Merhaba Arkadaşlar size basit bir etiket bulutu nasıl yapılır onu göstermek istiyorum bugün :)

Çok basit bir sistem ve sitelerinizde rahatlıkla kullanabilirsiniz…

<?php 
header('Content-type: text/html; charset="iso-8859-9"', true);
 
 
$host = "localhost";
$username = "root";
$password = " şifre";
$table_name = " db ";
 
$dbh=mysql_connect ($host, $username, $password) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ($table_name);
 
function dost_Linkler($url)
{
   $url = trim($url);
   $url = strtolower($url);
 
   $find = array('<b>', '</b>');
   $url = str_replace ($find, '', $url);
 
   $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
 
   $find = array('ı','İ');
   $url = str_replace($find, 'i', $url);
 
   $find =array('Ş','ş');
    $url = str_replace ($find, 's', $url);
   $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
   $url = str_replace ($find, '-', $url);
 
   $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
   $url = str_replace ($find, 'e', $url);
 
   $find = array('í', 'i', 'ì', 'î', 'ï', 'ı', 'I', 'I', 'Í', 'Ì', 'Î', 'Ï', 'İ');
   $url = str_replace ($find, 'i', $url);
 
   $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
   $url = str_replace ($find, 'o', $url);
 
   $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
   $url = str_replace ($find, 'a', $url);
 
   $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
   $url = str_replace ($find, 'u', $url);
 
   $find = array('ç', 'Ç');
   $url = str_replace ($find, 'c', $url);
 
   $find = array('s', 'ş', 'S', 'Ş');
   $url = str_replace ($find, 's', $url);
 
   $find = array('g', 'ğ', 'G', 'Ğ');
   $url = str_replace ($find, 'g', $url);
 
   $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
 
   $repl = array('', '-', '');
 
   $url = preg_replace ($find, $repl, $url);
   $url = str_replace ('--', '-', $url);
 
   return $url;
}
 
 
//etiketleri alacağınız tabloyu seçin 
//altta $r[e_tr]; war orda e_tr ye etiketleri tabloda hangi field dan alıyorsanız işte onu yazın... 
 
$q = mysql_query("select * from etiketler order by rand() ");
$etk= "";
if(mysql_num_rows($q) > 0) {
while ($r = mysql_fetch_array($q) ) {
$etk.= str_replace(" ", "_", $r[e_tr])." ";
}
}
 
// Etiket Arrayımız
$etiketArray = array(); 
 
// kelimeler
$etiketler = $etk;
 
// kelimeleri say
foreach( str_word_count( $etiketler, 1, 'ıİüÜöÖğĞşŞçÇ1234567890' ) as $etiket )
{
    // Tekrarlanmayı silip saymayı attır
    array_key_exists( $etiket, $etiketArray ) ? $etiketArray[ $etiket ]++ : $etiketArray[ $etiket ] = 0;
}
 
// ==============================================================
// = Bulutla Fonksiyonumuz                                      =
// ==============================================================
function bulutla( $etiketArray, $enDusukFont = 12, $enYuksekFont = 30 )
{
    $minSay = min( array_values( $etiketArray ) );
    $maxSay = max( array_values( $etiketArray ) );
    $spread       = $maxSay - $minSay;
 
    $bulutArray  = array();
 
    $spread == 0 && $spread = 1;
 
    foreach( $etiketArray as $etiket => $say )
    {
        $size = $enDusukFont + ( $say - $minSay ) 
            * ( $enYuksekFont - $enDusukFont ) / $spread;
        $bulutArray[] = '<a style="font-size: ' . floor ( $size ) . 'px' 
        . '" class="tag_cloud" href="http://siteniz.com/etiket/' . dost_Linkler($etiket) 
        . '" title="\'' . $etiket  . '\' toplam bulunan ' . $say . '">' 
        .  str_replace("_", " ", $etiket) . '</a>';
    }
 
    return join( "\n", $bulutArray ) . "\n";
}    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
    <title>Etiket Bulutu</title>
    <style type="text/css" media="screen">
        .tag_cloud { padding: 3px; text-decoration: none; }
        .tag_cloud:link  { color: #81d601; }
        .tag_cloud:visited { color: #019c05; }
        .tag_cloud:hover { color: #ffffff; background: #69da03; }
        .tag_cloud:active { color: #ffffff; background: #ACFC65; }
    </style>
</head>
 
<body>
<fieldset style="background:#FF6600; padding:5px; border:#FF6000 5px dashed; width:480px;">
<legend style="font-size:25px; color:#333333; border:#FF6000 3px solid; background:#FF6600; padding:5px;">Etiket Bulutu</legend>
    <div style="width:500px;">
        <?php echo bulutla( $etiketArray );  ?>
    </div>
    </fieldset>
</body>
</html>
Etiketler: , , , , ,
Toplam 252 kez okunmuş
Bugün hiç okunmamış
Yazı Katagorisi: PHP Kod Örnekleri, Php, Php Fonksiyonları, Webmaster Kaynakları

EkleBunu Sosyal Paylaşım Butonu

Eğer yazıyı beğendiyseniz ya da ekleyecekleriniz varsa, lütfen yorumunuz yazın veya RSS aboneliği ile yeni yazılardan anında haberdar olun.

Yorumlar
Aslı, 05 Mayıs 2008 saat 02:48 da demişki;

Merhaba.Ben bu sekilde etiket.php seklinde yaptım ama hata verdi.Sanirim birde etketler tablosu için sql sorgusu yapmamız gerekiyor yoksa yanlışmı biliyorum.
$table_name = ” db “; su kısımda ne yazıyoruz tam olarak.Birde mesela bu etiketleri ekledigimiz konularda altında gösterebilirmiyiz

by.seyfi, 13 Ağustos 2008 saat 03:06 da demişki;

S.a Üstadım Ben Bu Tag Cloud Olayına Taktım ama bir türlü olmuyor yapamadım Ne olur biraz yardım edin size nasıl ulaşabilirim.

Ben Burda Gösterdiğiniz Etiket Bulutunu AvArcade ye entegre etmek istiyorum ama yapamadım yardımcı olursanız çok sevinirim

by.seyfi, 19 Ağustos 2008 saat 14:34 da demişki;

üstad baktın mı bizim scripte baktıysanız çok memnun olacağız hayırlı çalışmlar

Yorum Yazın

(gerekli)

(gerekli)