我想了解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
答案 0 :(得分:3)
例如,您有两个标记:Tag A
发生1000次,Tag B
仅发生一次,Tag C
发生50次。第一个想法可能是出现的次数是字体大小。现在这不是很有帮助,因为我们的字体大小Tag A
为1000
,字体大小为Tag B
为1
。相反,你可能想要这样的东西:
25
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
的字体大小为10
,Tag B
的字体大小为1
,而Tag C
的字体大小为2
大小count
。
文档不是特别谈论font size
和Featured 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。