zend标记组件在zend框架中的用途是什么?

时间:2016-03-27 16:04:12

标签: php zend-framework zend-framework2 zend-tag

我想了解Zend Tag Component。

这是什么? 如何在我的项目中使用它?

假设我有以下三个表: 帖子 - 身份证,姓名 tags - id,name 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

2 个答案:

答案 0 :(得分:3)

例如,您有两个标记:Tag A发生1000次,Tag B仅发生一次,Tag C发生50次。第一个想法可能是出现的次数是字体大小。现在这不是很有帮助,因为我们的字体大小Tag A1000,字体大小为Tag B1。相反,你可能想要这样的东西:

  • 最常出现的标记应为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\中,这由权重(标签出现多少)和值(与标签权重相关的字体大小值)处理:

  • 首先我们创建一个标签列表,给每个标签一个权重(例如出现次数)。
  • 其次,我们告诉模块将允许的字体大小数组映射到项目中,与出现次数相关。

第二个是在文档中的这一行完成的:

$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));

这基本上告诉模块给出的标签最多显示10的字体大小,其中最小的字体大小为1。介于两者之间的一切都是随之而来的。要回到最初的示例,Tag A的字体大小为10Tag B的字体大小为1,而Tag C的字体大小为2大小count

文档不是特别谈论font sizeFeatured Tags的原因是抽象。我们可以使用一些其他因素来确定项目的重要性(例如重要性),而不是考虑出现次数。我们还可以使用一些更高级的计算值,例如,我们可以说1000更重要,除了计数之外还会为其权重添加额外的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 ) ); 将这些权重和值用作字体大小。但我们可以轻松地创建另一个模块,使用它们来渲染有序列表。

对于你的情况,这个简单的例子已经足够了:

JFrame

答案 1 :(得分:1)

文档很清楚(尽管不是那么明显);或许更好的问题是“什么是Zend_Tag_Cloud?”:

Zend_Tag_Cloud是Zend_Tag的渲染部分。默认情况下,它附带一组HTML装饰器,允许您为网站创建标签云,但也为您提供两个抽象类来创建自己的装饰器,例如在PDF文档中创建标签云。

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

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

HTH。