Als Beispiel haben Sie zwei Tags: Tag A
1000 mal vorkommend, Tag B
nur einmal vorkommend und Tag C
50 mal vorkommend. Die erste Idee könnte sein, dass die Anzahl der Vorkommen die Schriftgröße ist. Nun, das ist nicht sehr hilfreich, da wir Tag A
bei Schriftgröße 1000
und Tag B
bei Schriftgröße 1
haben. Stattdessen möchten Sie wahrscheinlich so etwas wie:
- Der Tag am meisten vorkommenden sollte font-size
25
- Der Tag vorkommende mindestens haben sollte font-size
10
- Alle anderen Tags haben sollte gleichmäßig zwischen in Schrift verbreitet werden Schritte
2
Dies ist, wo dieses Modul an Ort und Stelle kommt. Das grundlegende Problem, das dieses Modul zu lösen versucht, ist das Mapping von how often a tag occurs to how large you want it to be displayed in relation to other tags
. Oder in eine Funktion gestellt werden: calculateBoundedFontSize(count($tag))
.
In Zend\Tag\
wird dies durch Gewichte behandelt (wie viel ein Tag auftritt) und Werte (die Schriftgröße Wert in Bezug auf das Gewicht eines Tag):
- Zuerst haben wir eine Liste von Tags erstellen, die jeweils zu geben ein Gewicht (z. B. die Anzahl der Vorkommen).
- Zweitens teilen wir dem Modul mit, ein Array von erlaubten Schriftgrößen zu den Objekten in Bezug auf die Anzahl der Vorkommen zuzuordnen.
Die zweite wird von dieser Linie in der Dokumenation getan:
$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
die im Grunde das Modul teilt den Tag occoring die meisten eine Schriftgröße von 10
, die eine occoring mindestens eine Schriftgröße zu geben, 1
. Alles dazwischen ist entsprechend verteilt. Um zum ursprünglichen Beispiel zurückzukehren, erhält Tag A
eine Schriftgröße von 10
, Tag B
eine Schriftgröße von 1
und Tag C
eine Schriftgröße von 2
.
Der Grund, warum die Dokumentation nicht speziell über count
und font size
spricht, ist für die Abstraktion. Anstatt die Anzahl von Vorkommen zu nehmen, könnten wir einen anderen Faktor verwenden, um die Wichtigkeit eines Gegenstands zu bestimmen (z. B. Wichtigkeit). Wir könnten auch einen fortgeschritteneren berechneten Wert verwenden, zum Beispiel könnten wir sagen, Featured Tags
sind wichtiger und fügen zusätzlich zu der Zählung eine zusätzliche 1000
zu ihrem Gewicht hinzu. Für Werte gilt das Gleiche, es muss nicht eine Schriftgröße sein, sondern könnte auch für die Bestellung verwendet werden. Nur Zend\Tag\Cloud
verwendet diese Gewichtungen und Werte als Schriftgrößen. Aber wir könnten einfach ein anderes Modul erstellen, das sie stattdessen zum Rendern einer geordneten Liste verwendet.
Für Ihre Situation würde das einfache Beispiel genügen bereits obwohl:
// Create a ItemList
$list = new Zend\Tag\ItemList();
// Add all tags and their count to it
foreach ($allTags as $tag) {
$list[] = new Zend\Tag\Item(array('title' => $tag, 'weight' => countTagOccurences($tag));
}
// Assign font size values
$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
// Or to use the Zend\Tag\Cloud directly
$cloud = new Zend\Tag\Cloud(
array(
'tagDecorator' => array(
'decorator' => 'htmltag',
'options' => array(
'minFontSize' => '1',
'maxFontSize' => '10',
),
),
'tags' => $list
)
);
Sie vielleicht ein bisschen präziser auf die spezifischen Teil auf der Dokumentation, die Sie zusätzliche Informationen benötigen Sie sein wollen. Wenn Sie sich die zweite Dokumentationsseite ansehen, sehen Sie bereits den häufigsten Anwendungsfall für diese Funktion: Erstellen von Tag-Clouds. – Fge
@Fge Ich habe meinen Beitrag aktualisiert. –