ฟังก์ชั่นสร้าง Tag Cloud

บันทึกโดย TaTump วันที่ 29 July 2008 | 931 views

ก็ตามรูปด้านบนคงไม่ต้องอธิบายกันมาก จริงๆฟังก์ชั่นนี้ผมเอามาแก้ไขเพิ่มเติมนิดหน่อย ดูต้นฉบับ คลิกที่นี่ วิธีใช้งานตามตัวอย่างด้านล่างครับ

function

function printTagCloud($tags,$url,$css) {

$max_size = 32; //กำหนด ขนาด font ใหญ่ สุดที่นี่
$min_size = 12; // กำหนด ขนาด font เล็ก สุดที่นี่

ksort($tags);
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));

$spread = $max_qty - $min_qty;
if ($spread == 0) {
$spread = 1;
}

$step = ($max_size - $min_size) / ($spread);

foreach ($tags as $key => $value) {
$size = round($min_size + (($value - $min_qty) * $step));

$printTagCloud .=  '<a href="'.$url. $key.'" style="font-size: ' . $size . 'px" title="' . $value . ' things tagged with ' . $key . '" class="'.$css.'">' . $key . '</a> ';
}

return $printTagCloud ;
}

Example

$tags = array('PHP' => 32, 'Google' => 431, 'ASP.NET' => 622, 'JAVA' => 51, 'WEB 2.0' => 23, 'Linux' => 971, 'Firefox' => 407, 'Idea' => 82, 'Music' => 227);
$url="http://www.memo8.com/toolkits/?s=";
$css="LinkNormal";

echo printTagCloud($tags,$url,$css);

- ค่าที่ส่งก็มี tag ที่กำหนดให้เป็น Array ตามตัวอย่าง
- Url สำหรับลิงค์
- CSS ใส่ ชื่อ class css เพิ่มความสวยงาม

ดูตัวอย่าง : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.php

ดาวน์โหลด : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.phps

Bookmark and Share

5 Responses to “ฟังก์ชั่นสร้าง Tag Cloud”

  1. srenon

    ถ้า อยากทำแบบ เก็ยในฐานข้อมูลต้องทำยังงัย ครับ


  2. admin

    ^
    ^
    ^
    ผมให้ไอเดียดังนี้นะคับ
    # สร้างตารางสำหรับเก็บข้อมูล Tag (จากเดิมเป็น Array)
    – ชื่อtag
    – จำนวนบทความที่ใช้tagนี้ (ก็ Sum ไว้ที่ฟิลด์นี้)

    # อีกตารางก็เก็บข้อมูลว่าบทความไหนใช้ tag อะไร
    อาจจะใช้ PK ของตารางบทความผูกกับ PK ของตาราง tag ก็ได้ครับ

    พอเก็บได้แบบนี้เราก็แค่ดึงข้อมูลออกมาวนลูปเก็บใส่ Array แล้วไปเรียกฟังก์ชั่น printTagCloud เหมือนเดิมครับ

    เอ… จะมองภาพออกมั้ย ^__^


  3. admin

    โ้อ้วว ขอบคุณครับ ^_______________^


  4. appleTea~

    จ่ะร้ะแหร่มแมว !!!


คอมเม้นท์ซิจ๊ะ