Diese Methode für SQL/PostgreSQL
Fanatiker ist. Es führt den gesamten Job in der Datenbank aus und druckt Text mit "slugified" -Link. Es verwendet Doctrine ORM
nur für den SQL-Aufruf, ich verwende keine Objekte. 10 Größen Angenommen, wir haben:
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);
}
dann können Sie sie mit einigen CSS-Klasse zu drucken, von .tagranking10 (am besten) zu.tagranking1 (das sehr schlecht):
<?php foreach ($allTags as $tag): ?>
<span class="<?php echo 'tagrank'.$tag['ranking'] ?>">
<?php echo sprintf('<a rel="tag" href="/search/by/tag/%s">%s</a>',
$tag['slug'], $tag['tag']
); ?>
</span>
<?php endforeach; ?>
und dies ist der 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 */
Diese Methode zeigt alle Tags. Wenn Sie viele davon haben, möchten Sie wahrscheinlich nicht, dass Ihre Tag-Cloud zu einem Tag storm wird.
-- minimum tag count is 8 --
HAVING count(tag) > 7
Das ist alles
Dies scheint einen guten Ansatz zu mir. Wenn sich Ihre Daten in einem Array befinden, überspringen Sie einfach den Datenbankbereich. Ich würde empfehlen, den Künstlernamen und die Anzahl in einem einzigen assoziativen Array zu speichern. Um das mit dem obigen Code zu arbeiten, benutze etwas wie: $ tags = array ("die Wurzeln" => 5, "michael jackson" = 3, "billy idol" => 9, "madonna" => 1); Ich würde zustimmen, verwenden Sie nicht H-Tags, da es Ihre Semantik durcheinander bringt. Spans wäre meine Wahl. Schließlich gibt es im Zend Framework einen Helfer, der genau das tut, was Sie brauchen. Siehe http://framework.zend.com/manual/en/zend.tag.html – simonrjones
Entschuldigung, keine Formatierung im obigen Kommentar scheint es! – simonrjones