Tag A
例として、 1000 回発生するタグ、1 回Tag B
だけ発生するタグ、およびTag C
50 回発生するタグの 2 つがあるとします。最初のアイデアは、出現回数をフォント サイズにすることです。Tag A
これは、 at font size1000
やTag B
at font size のようにあまり役に立ちません1
。代わりに、おそらく次のようなものが必要です。
- 最も頻繁に出現するタグには font-size を指定する必要があります
25
- 出現回数が最も少ないタグには font-size が必要です
10
- 他のすべてのタグは、次のフォント サイズのステップで均等に配置する必要があります。
2
ここで、このモジュールの出番です。このモジュールが解決しようとする基本的な問題は、 のマッピングですhow often a tag occurs to how large you want it to be displayed in relation to other tags
。または関数に入れる: calculateBoundedFontSize(count($tag))
.
これZend\Tag\
は、重み (タグが出現する量) と値 (タグの重みに関連するフォント サイズの値) によって処理されます。
- まず、タグのリストを作成し、それぞれに重み (出現回数など) を与えます。
- 次に、出現回数に関連して、許可されたフォントサイズの配列を項目にマップするようにモジュールに指示します。
2番目は、ドキュメントの次の行で行われます。
$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
これは基本的に、最も多く発生するタグに のフォントサイズを与え、最も少なく発生するタグに のフォントサイズを与えるようにモジュールに指示し10
ます1
。間にあるものはすべて適切に分散されます。最初の例に戻るとTag A
、フォント サイズが 、フォント サイズが10
、Tag B
フォントサイズが1
になります。Tag C
2
ドキュメントが特に話していない理由count
はfont size
、抽象化のためです。出現回数を取得する代わりに、アイテムの重要性を判断するために他の要因を使用できます (重要性など)。また、より高度な計算値を使用することもできます。たとえば、Featured Tags
より重要であり1000
、カウントに加えて重みに追加することができます。同じことが当てはまる値については、font-size である必要はありませんが、代わりに順序付けにも使用できます。これらの重みと値のみZend\Tag\Cloud
をフォント サイズとして使用します。しかし、代わりに順序付きリストをレンダリングするためにそれらを使用する別のモジュールを簡単に作成できます。
あなたの状況では、単純な例で十分です:
// 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
)
);