0

Zend Tag Component について知りたいです。

それは何ですか?私のプロジェクトでこれを使用する方法は?

次の 3 つのテーブルがあるとします: 投稿 - id、名前タグ - id、名前 posts_tags - id、post_id、tag_id

このコンポーネントを使用してタグ クラウドを作成するにはどうすればよいですか? 重量とは?

これらを確認しました:
http://framework.zend.com/manual/current/en/modules/zend.tag.introduction.html

http://framework.zend.com/manual/current/en/modules/zend.tag.cloud.html

4

2 に答える 2

3

Tag A例として、 1000 回発生するタグ、1 回Tag Bだけ発生するタグ、およびTag C50 回発生するタグの 2 つがあるとします。最初のアイデアは、出現回数をフォント サイズにすることです。Tag Aこれは、 at font size1000Tag Bat 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、フォント サイズが 、フォント サイズが10Tag Bフォントサイズが1になります。Tag C2

ドキュメントが特に話していない理由countfont 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-28T09:53:53.077 に答える
1

ドキュメンテーションは非常に明確です (それほど明らかではありませんが)。「Zend_Tag_Cloud とは何ですか?」という質問の方が適切かもしれません。

Zend_Tag_Cloud は Zend_Tag のレンダリング部分です。デフォルトでは、Web サイト用のタグ クラウドを作成できる HTML デコレータのセットが付属していますが、たとえば PDF ドキュメントでタグ クラウドを作成するために、独自のデコレータを作成するための 2 つの抽象クラスも提供されます。

http://framework.zend.com/manual/1.12/en/zend.tag.cloud.html

https://en.wikipedia.org/wiki/Tag_cloud

HTH。

于 2016-03-27T17:45:58.660 に答える