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


What is the use of zend tag component in zend framework?

我想了解 Zend Tag Component。

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

假设我有以下三个表:帖子 - ID,姓名标签 - ID,名称posts_tags - 编号,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

例如

,您有两个标签:Tag A出现 1000 次、Tag B仅出现一次和Tag C出现 50 次。第一个想法可能是将出现次数设置为字体大小。现在这不是很有帮助,因为我们Tag A字体大小1000Tag 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的字体大小为 10Tag B字体大小为 1Tag C字体大小为 2

文档没有特别谈论countfont 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_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

呵。