Această metodă este pentru fantele SQL / PostgreSQL
. Face întreaga activitate în baza de date și imprimă text cu link-ul "slugified". Utilizează Doctrină ORM
doar pentru apelul sql, nu folosesc obiecte.
Să presupunem că avem 10 dimensiuni:
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);
}
apoi le imprimați cu unele clase CSS, de la .tagranking10 (cel mai bun) la .tagranking1 (cel mai rău):
<?php foreach ($allTags as $tag): ?>
<?php echo sprintf('%s',
$tag['slug'], $tag['tag']
); ?>
<?php endforeach; ?>
și acesta este CSS
:
/* put your size of choice */
.tagrank1{font-size: 0.3em;}
.tagrank2{font-size: 0.4em;}
.tagrank3{font-size: 0.5em;}
/* go on till tagrank10 */
Această metodă afișează toate etichetele. Dacă aveți multe dintre ele, probabil că nu doriți ca norul dvs. de etichete să devină o furtună de etichete . În acest caz, ați adăuga o clauză HAVING TO
la interogarea SQL:
-- minimum tag count is 8 --
HAVING count(tag) > 7
Asta e tot