Ich habe die folgenden Arrays:
$artist = array("the roots", "michael jackson", "billy idol", "more", "and more", "and_YET_MORE");
$count = array(5, 3, 9, 1, 1, 3);
Ich möchte eine Tag-Cloud generieren, die Künstler mit einer höheren Anzahl in $count
eingeschlossenen h6
Tags und den niedrigsten eingeschlossenen h1
Tags enthält.
@ Ryan
Das ist richtig, aber es macht die Tags mit der geringsten Anzahl tatsächlich größer. Dieser Code wurde getestet:
$artist = array("the roots","michael jackson","billy idol","more","and more","and_YET_MORE"); $count = array(5,3,9,1,1,3); $highest = max($count); for ($x = 0; $x < count($artist); $x++) { $normalized = ($highest - $count[$x]+1) / $highest; $heading = ceil($normalized * 6); // 6 heading types echo "<h$heading>{$artist[$x]}</h$heading>"; }
quelle
Diese Methode ist für
SQL/PostgreSQL
Fanatiker. Es erledigt den gesamten Job in der Datenbank und druckt Text mit dem Link "Slugified". Es verwendet DoctrineORM
nur für den SQL-Aufruf, ich verwende keine Objekte. Angenommen, wir haben 10 Größen: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 drucken Sie sie mit einer CSS-Klasse, von .tagranking10 (die beste) bis .tagranking1 (die schlechteste):
<?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 das ist das
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 an. Wenn Sie viele davon haben, möchten Sie wahrscheinlich nicht, dass Ihre Tag-Cloud zu einem Tag-Sturm wird . In diesem Fall würden Sie
HAVING TO
Ihrer SQL-Abfrage eine Klausel hinzufügen:-- minimum tag count is 8 -- HAVING count(tag) > 7
Das ist alles
quelle
Als Helfer in Rails:
def tag_cloud (strings, counts) max = counts.max strings.map { |a| "<span style='font-size:#{((counts[strings.index(a)] * 4.0)/max).ceil}em'>#{a}</span> " } end
Nennen Sie dies aus der Sicht:
Dies gibt
<span style='font-size:_em'>
Elemente in einem Array aus, die in der Ansicht in eine Zeichenfolge konvertiert werden, um letztendlich wie folgt zu rendern:<span style='font-size:3em'>the roots</span> <span style='font-size:2em'>michael jackson</span> <span style='font-size:4em'>billy idol</span> <span style='font-size:1em'>more</span> <span style='font-size:1em'>and more</span> <span style='font-size:2em'>and_YET_MORE</span>
Es wäre besser, ein
class
Attribut zu haben und die Klassen in einem Stylesheet zu referenzieren, wie oben von Brendan erwähnt. Viel besser alsh1-h6
semantisch zu verwenden und es gibt weniger Stilgepäck mit einem<span>
.quelle
Ich weiß, dass es ein sehr alter Beitrag ist, aber ich poste immer noch meine Ansicht, da sie in Zukunft jemandem helfen könnte.
Hier ist die Tagcloud, die ich auf meiner Website verwendet habe: http://www.vbausefulcodes.in/
<?php $input= array("vba","macros","excel","outlook","powerpoint","access","database","interview questions","sendkeys","word","excel projects","visual basic projects","excel vba","macro","excel visual basic","tutorial","programming","learn macros","vba examples"); $rand_tags = array_rand($input, 5); for ($x = 0; $x <= 4; $x++) { $size = rand ( 1 , 4 ); echo "<font size='$size'>" . $input[$rand_tags[$x]] . " " . "</font>"; } echo "<br>"; $rand_tags = array_rand($input, 7); for ($x = 0; $x <= 6; $x++) { $size = rand ( 1 , 4 ); echo "<font size='$size'>" . $input[$rand_tags[$x]] . " " . "</font>"; } echo "<br>"; $rand_tags = array_rand($input, 5); for ($x = 0; $x <= 4; $x++) { $size = rand ( 1 , 4 ); echo "<font size='$size'>" . $input[$rand_tags[$x]] . " " . "</font>"; } ?>
quelle