zend框架中的zend标签组件有什么用?
What is the use of zend tag component in zend framework?
我想了解 Zend 标签组件。
这是什么?
如何在我的项目中使用它?
假设我有以下三个表:
帖子-ID,名称
标签 - 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
文档非常清楚(虽然不是那么明显);也许更好的问题是 "What is 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.
例如,您有两个标签: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
会得到 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
)
);
我想了解 Zend 标签组件。
这是什么? 如何在我的项目中使用它?
假设我有以下三个表: 帖子-ID,名称 标签 - 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
文档非常清楚(虽然不是那么明显);也许更好的问题是 "What is 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.
例如,您有两个标签: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
会得到 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
)
);