typecho多次输出标签时参数失效问题
1年前
主题改版后发现了一个问题,我在主页的导航栏用的是标签,输出12个标签(按标签下文章数量排序,文章最多的12个标签),最近加了个侧边栏并在侧边栏里加了标签云的效果,这儿输出30个标签(标签总数大于12个小于30个的),但无论怎么改参数,侧边栏的标签云输出的标签个数始终和导航栏标签数一致,好像用的是同一个输出。
我试着把侧边栏标签云的输出用的数组变量改名,改变不了数量,第二次引用的标签数总会和第一次引用的一样!不论第二次引用时limit数改为多少。
去typecho的github提问也没有人回答,后来在SegmentFault上提问才得知是typecho的内置功能,具体代码今天终于有空翻腾一会代码,找到了如下别名的几句,原来是这样处理的。
var/Typecho/Widget.php
$parts = explode('@', $alias);
$className = $parts[0];
$alias = empty($parts[1]) ? $className : $parts[1];
导航代码:
<?php $this->widget('Widget_Metas_Tag_Cloud', array('sort' => 'count', 'ignoreZeroCount' => true, 'desc' => true, 'limit' => 12))->to($tags); ?>
<?php while($tags->next()): ?>
<li><a rel="tag" href="<?php $tags->permalink(); ?>" title="<?php $tags->name(); ?>"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
侧边栏标签云代码:
<?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=30')->to($tags); ?>
<ul>
<?php while($tags->next()): ?>
<li><a style="color: rgb(<?php echo(rand(0, 255)); ?>, <?php echo(rand(0,255)); ?>, <?php echo(rand(0, 255)); ?>)" href="<?php $tags->permalink(); ?>" target="_blank"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
修改方法:在widget里后面加上@任意不同字符串即可,内置功能,有空再翻腾源码找找为什么吧,现在先这样改了好用了就好。
导航代码:
<?php $this->widget('Widget_Metas_Tag_Cloud@nav', array('sort' => 'count', 'ignoreZeroCount' => true, 'desc' => true, 'limit' => 12))->to($tags); ?>
<?php while($tags->next()): ?>
<li><a rel="tag" href="<?php $tags->permalink(); ?>" title="<?php $tags->name(); ?>"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
侧边栏标签云代码:
<?php $this->widget('Widget_Metas_Tag_Cloud@bar', 'ignoreZeroCount=1&limit=30')->to($tags); ?>
<ul>
<?php while($tags->next()): ?>
<li><a style="color: rgb(<?php echo(rand(0, 255)); ?>, <?php echo(rand(0,255)); ?>, <?php echo(rand(0, 255)); ?>)" href="<?php $tags->permalink(); ?>" target="_blank"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>
文章来源于:https://www.amkevin.com/218.html