小左闲谈

WordPress实现彩色标签云及不同页面不同侧边栏的实现

当前位置:首页 » 学习 » 本页
In 学习  @2012-05-26

主题标签云的颜色都是一个颜色未免单调,我们可以用一段代码即可将标签变成彩色的,这可以为你的网站增色不少;
网站从主页到分类页到归档页到单独页面到文章页全部都是一样的侧边栏,这肯定不是你想要的,那么来看看怎样实现不同页面用不同侧边栏吧!

一、无插件实现彩色标签云

1、随机颜色:
将下面一段代码插入到主题文件中functions.php文件的末尾。

<?php
function colorCloud($text) {
$text = preg_replace_callback('|<a (.+?)>|i', 'colorCloudCallback', $text);
return $text;
}
function colorCloudCallback($matches) {
$text = $matches[1];
$color = dechex(rand(0,16777215));
$pattern = '/style=(\'|\")(.*)(\'|\")/i';
$text = preg_replace($pattern, "style=\"color:#{$color};$2;\"", $text);
return "<a $text>";
}
add_filter('wp_tag_cloud', 'colorCloud', 1);
?>

第8行代码’$color=dechex(rand(0,16777215)); ‘作用是定义标签随机颜色的十进制数值范围,0 等于 #000000,16777215 等于 #ffffff。你可以使用进制换算工具换算后修改这行代码,改变颜色范围。

在主题需要的地方加入以下代码(新版本wordpress中如果您的theme支持widgets,添加标签云模块即可,不用手动添加下面的代码):

<?php wp_tag_cloud('smallest=8&largest=24&number=50'); ?>

代码说明:
“smallest”:最小的字体尺寸(使用频率最少的标签)
“largest”:最大的字体尺寸(频率最多的)
“number”:则表示标签显示数量。
2、自定义颜色
将以下代码放入主题包 functions.php 文件内:

 <?php
function colorCloud($text) {
$text = preg_replace_callback('|<a (.+?)>|i', 'colorCloudCallback', $text);
return $text;
}
function colorCloudCallback($matches) {
$text = $matches[1];
$colorFull = array('#999','#D8D9A4','#9BB','#EB9','#a3c159','#FEC42D','#6C8C37',
'#c2dc15','#3371A3','#888','#00ccff','#FF8080');
$color = $colorFull[ mt_rand(0, count($colorFull) - 1)];
$pattern = '/style=(\'|\")(.*)(\'|\")/i';
$text = preg_replace($pattern, "style=\"color:{$color};$2;\"", $text);
return "<a $text>";
}
add_filter('wp_tag_cloud', 'colorCloud', 1);
?>

代码说明:
代码
$colorFull = array(‘#999′,’#D8D9A4′,’#9BB’,’#EB9′,’#a3c159′,’#FEC42D’,’#6C8C37′,’#c2dc15′,’#3371A3′,’#888′,’#00ccff’,’#FF8080′);
中的是自定义的颜色,把自己喜欢的颜色改上去即可。


二、Widget logic插件实现不同页面不同侧边栏

Widget logic 是最有用的wordpress插件之一。通过设置,Widget logic能够让博客的不同页面显示不同的侧边栏。这个功能非常有用,当你打算在侧边栏显示广告或其它内容时,不必再费事地修改模板。

你可以从wordpress.org网站下载这个插件或者后台安装,安装完毕后,启用即可。

启用Widget logic后,你的每个侧边栏小工具底下会有一个Widget logic选项,在里面输入相关判断条件即可控制该小工具显示在哪些页面。

添加页面显示条件

在所有的小工具底部,有一个选项框,即“widget logic”。在这里输入页面显示条件来控制侧边栏的显示。新手如果不懂不要紧,你可以参看下面的说明来设置:WordPress Codex – Conditional Tags

在本例中,我设定的筛选条件是“除了首页的所有页面“。因为判断首页的函数为:is_home(),那么除了首页的所有页面的语句应该是:!is_home()。在widget logic选项框中输入这个语句,然后保存即可。


常用条件列举
is_single() – 判断是否为单篇日志

is_page() – 判断是否为单个页面

is_page(‘about’) -判断是否为about页面

is_page(’25’) -判断是否为id=25的页面

is_archive() – 判断是否为存档

is_category(‘wordpress’) – 判断是否为别名是“wordpress“的目录

is_category(’37’) -判断是否为id=37的目录

has_tag (‘wordpress’) – 判断是否存在名为“wordpress“的标签

你也可以使用逻辑运算符实现更多的控制。|| 为逻辑“或”,&&为逻辑“与”。

实例1

在title为“fruit”的页面或名为“food”的目录页或tag为“banana”的页面显示某一小工具。

is_page(‘fruit’) || is_category(‘food’) || has_tag(‘banana’)

实例2

仅在单篇日志并且不是某一指定目录中显示小工具。你需要提供特定目录的id号,而不能用别名或目录名来代替。

is_single() &&!in_category( array(23,30,78))

正如我上面所说的,你可以参看相关文章来学习更复杂的条件判断函数。

若无特殊声明,表示本文由:小左闲谈.原创
链接地址: http://blog.m1910.com/archives/188.html
版权所有 © 转载时请以链接形式注明作者和原始出处!
标签: , ,   评论: 3枚  被围观 4,471 次

发表一下你的看法

3 评论 在 "WordPress实现彩色标签云及不同页面不同侧边栏的实现"

avatar
排序:   最新 | 最旧
OniOnRinG

很实用的文章,自己修改主题的基本技能,正在使用,收下了,谢谢

wpDiscuz