例として、Tag A
は1000回発生し、Tag B
は1回だけ発生し、Tag C
は50回発生します。最初のアイデアには、フォントサイズになる数があります。フォントサイズが1000
のTag A
、フォントサイズが1
のTag B
と非常に役に立ちません。代わりに、あなたはおそらく何かしたい:
- を最もoccuringタグがフォントサイズに
25
- を持っている必要があり、少なくともをoccuringタグは、他のすべてのタグがフォントでの間で均等に分散させる必要があり、フォントサイズ
10
- を持つべきです-size steps of
2
これは、このモジュールが配置される場所です。このモジュールが解決しようとする基本的な問題は、のマッピングです。または、関数に入れる:calculateBoundedFontSize(count($tag))
。各与え、
- まず、我々はタグのリストを作成します。
はZend\Tag\
では、これは重み(タグが起こるどのくらい)、および値(タグの重量に対してフォントサイズの値)によって処理されます重み(例えば、出現回数)。
- 第2に、出現回数に関連して、許可されたフォントサイズの配列をアイテムにマップするようにモジュールに指示します。基本的に
10
のほとんどのフォントサイズをoccoringタグ、少なくとも一つoccoringフォントサイズを与えるためにモジュールに指示 $list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
:
第はdocumenation、このラインによって行われます1
。その間のすべてが時折広がっています。最初の例に戻ると、Tag A
は10
,Tag B
のフォントサイズを、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
)
);
出典
2016-03-28 09:53:53
Fge
あなたは、追加情報が必要ですマニュアルの特定のどの部分にもう少し具体的にしたい場合があります。 2番目のドキュメントページを見ると、すでにこの機能の最も一般的な使用例、つまりタグクラウドの作成が表示されます。 – Fge
@Fge投稿を更新しました。 –