ฟังก์ชั่นสร้าง Tag Cloud
บันทึกโดย วันที่ 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


ถ้า อยากทำแบบ เก็ยในฐานข้อมูลต้องทำยังงัย ครับ
January 25th, 2009 at 6:31 pm
^
^
^
ผมให้ไอเดียดังนี้นะคับ
# สร้างตารางสำหรับเก็บข้อมูล Tag (จากเดิมเป็น Array)
– ชื่อtag
– จำนวนบทความที่ใช้tagนี้ (ก็ Sum ไว้ที่ฟิลด์นี้)
# อีกตารางก็เก็บข้อมูลว่าบทความไหนใช้ tag อะไร
อาจจะใช้ PK ของตารางบทความผูกกับ PK ของตาราง tag ก็ได้ครับ
พอเก็บได้แบบนี้เราก็แค่ดึงข้อมูลออกมาวนลูปเก็บใส่ Array แล้วไปเรียกฟังก์ชั่น printTagCloud เหมือนเดิมครับ
เอ… จะมองภาพออกมั้ย ^__^
January 26th, 2009 at 12:10 am
โ้อ้วว ขอบคุณครับ ^_______________^
February 15th, 2009 at 9:54 pm
จ่ะร้ะแหร่มแมว !!!
August 11th, 2009 at 5:28 pm