यह विधि SQL / PostgreSQL
fanatics के लिए है। यह डेटाबेस में पूरी नौकरी करता है, और यह "slugified" लिंक के साथ पाठ मुद्रित करता है। यह सिर्फ एसक्यूएल कॉल के लिए सिद्धांत <कोड> ओआरएम का उपयोग करता है, मैं वस्तुओं का उपयोग नहीं कर रहा हूं।
मान लें कि हमारे पास 10 आकार हैं:
public function getAllForTagCloud($fontSizes = 10)
{
$sql = sprintf("SELECT count(tag) as tagcount,tag,slug,
floor((count(*) * %d )/(select max(t) from
(select count(tag) as t from magazine_tag group by tag) t)::numeric(6,2))
as ranking
from magazine_tag mt group by tag,slug", $fontSizes);
$q = Doctrine_Manager::getInstance()->getCurrentConnection();
return $q->execute($sql);
}
तो आप उन्हें .tagranking10 (सर्वोत्तम) से .tagranking1 (सबसे खराब) से कुछ सीएसएस वर्ग के साथ प्रिंट करते हैं:
<?php foreach ($allTags as $tag): ?>
<?php echo sprintf('%s',
$tag['slug'], $tag['tag']
); ?>
<?php endforeach; ?>
और यह सीएसएस
है:
/* put your size of choice */
.tagrank1{font-size: 0.3em;}
.tagrank2{font-size: 0.4em;}
.tagrank3{font-size: 0.5em;}
/* go on till tagrank10 */
यह विधि सभी टैग प्रदर्शित करती है। यदि आपके पास उनमें से बहुत सारे हैं, तो शायद आप नहीं चाहते कि आपका टैग क्लाउड टैग तूफान बन जाए। उस स्थिति में आप अपनी SQL क्वेरी में हैविंग
क्लॉज जोड़ देंगे:
-- minimum tag count is 8 --
HAVING count(tag) > 7
बस इतना ही