2016-03-27 12 views
0

Zend Tagコンポーネントについて知りたいです。zendフレームワークでのzendタグコンポーネントの使用方法は?

この意味は? これは私のプロジェクトでどうやって使うのですか?

私は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

+0

あなたは、追加情報が必要ですマニュアルの特定のどの部分にもう少し具体的にしたい場合があります。 2番目のドキュメントページを見ると、すでにこの機能の最も一般的な使用例、つまりタグクラウドの作成が表示されます。 – Fge

+0

@Fge投稿を更新しました。 –

答えて

3

例として、Tag Aは1000回発生し、Tag Bは1回だけ発生し、Tag Cは50回発生します。最初のアイデアには、フォントサイズになる数があります。フォントサイズが1000Tag A、フォントサイズが1Tag 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 A10,Tag Bのフォントサイズを、Tag Cのフォントサイズを2とします。

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 
    ) 
); 
+0

zendのドキュメントと比較して非常に良い説明に感謝します。 –

1

ドキュメントは(すべてが明らかでないが)かなり明確です。 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。

+0

@Gomez。私は自分の投稿を更新しました。 –

関連する問題