存档

‘WordPress技巧’ 分类的存档

博客建站定制结束!附木化版iNove:iBois

2011年1月12日 影木 没有评论
iBois主题截屏

iBois主题截屏

为期半个月的博客建站、论坛搭建、主题修改、各种配置,终于结束了…
我以 Discuz论坛的一个配色配图主题搭配 代码再加上自己修改终于完成了这个网站定制!作为成品,我还是把这个主题放出来吧~

简介:

本主题修改自iNove, 使用了某Discuz主题的配色方案和一些图, 零插件要求, 支持 Widgets.
改善了iNove 完美支持wp3.0的navmenu. 并加入了jQuery 支持,但只修改了部分iNove的js代码,仍需继续修改。
其他功能基本和iNove差不多。

适用版本:

3.0以上版本,支持到3.0.4

图片标题:

修改 title_psd 文件夹中的 PSD 图片, 将图片修改为你的博客标题,导出到images,覆盖logo.gif

本地化

iBois自带了简体中文 (zh_CN) 语言包,通过修改您的 WordPress 根目录下的 wp-config.php 文件来将其激活:
在该文件中查找 "define ('WPLANG', '');" 并将其替换为 "define ('WPLANG', 'zh_CN');"

致谢

本主题大部分代码来自 iNove
风格来自Discuz主题 灰色轨迹

许可

本主题以 GPL 许可证发布,可以对其进行更改后再度发布,但仍必须以 GPL 许可证发布。

主题下载:

最后附上,iBois主题:点此下载

分类: WordPress技巧 标签: iNove, theme, wordpress

WordPress小技巧: SEO用小插件一只 – nofollow自动添加

2011年1月12日 影木 2 条评论

为了避免搜索引擎对博客无关紧要的页面进行抓取,一般都会在那些链接上加上rel=”nofollow”。不过wordpress一些自动生成的链接里都没这块可以设置的。

所以我网上大致得找了下,综合得写了个简单的小插件:直接无脑地在调用the_tags()当前Tags, the_category() 当前目录, the_author_posts_link()作者存档页 这三个自动生成的链接中加入nofollow 属性。代码如下:

<?php
function relNofollow($text) {
	$text = preg_replace_callback('|<a (.+?)>|i', 'relNofollowCallback', $text);
	return $text;
}

function relNofollowCallback($matches) {
	$textorigin = $matches[1];
	$text = preg_replace_callback('|rel="(.+?)"|i', 'relNofollowReplaceCallback', $textorigin);
	$text = preg_replace_callback("|rel='(.+?)'|i", 'relNofollowReplaceCallback', $text);
	if($text == $textorigin) $text .= 'rel="nofollow"';
	return "<a $text>";
}

function relNofollowReplaceCallback($matches) {
	$text = $matches[1];
	$text .= " nofollow";
	return 'rel="'.$text.'"';
}

add_filter('the_tags', 'relNofollow');
add_filter('the_category', 'relNofollow');
add_filter('the_author_posts_link', 'relNofollow');
?>

基本就是用正则表达式找出a标签中的rel=然后强行添加nofollow。由于这个改法比较无脑,只要开启后所有当前页的标签,目录,作者都会加上nofollow,对SEO无爱者慎用。

最后附上zip包,可以直接下载:本地下载

分类: WordPress技巧 标签: wordpress, 插件

WordPress小技巧:根据Tag选择性添加转载声明

2011年1月8日 影木 没有评论

对于个人性质的博客,往往会选择在文末添加上一个转载声明。
不过有时候会在博客中转载一些其他的咨询新闻,这时候如果添加这种原创性质的转载声明往往不太合适。
所以做了一下小小的微调,根据文章的Tag来选择是否显示转载声明。
编辑single.php,在文末也就是

<?php the_content(); ?>

之后添加如下代码:

<!– Start Replant statement  –>
<?php
	$isDisplay = true;
	$tagsArr = get_the_tags();
	if($tagsArr!=null){
	 foreach($tagsArr as $tag)
	 {
		if($tag->name === "转载" || $tag->name === "Reprinted" || $tag->name === "Reprint")
		{
			$isDisplay = false;
			break;
		}
	  }
	}
	 if($isDisplay)
	 {
?>
	<p style=”padding-top:20px;”><address>转载本文请注明,转自:<strong>
	<a href="<?php echo home_url ( '/' ); ?>" rel="nofollow"><?php bloginfo('name');?></a></strong><br />
	本文地址: <?php the_permalink(); ?></address></p>
<?php
	 }
?>
<!– End Replant statement –>

基本思路就是文章存在”转载”或者”Reprinted”的Tag时,不显示转载声明,以表示该文章为他站转载。而默认情况下则为显示转载声明。

修改SimpleTags的autolink中文支持

2011年1月2日 影木 没有评论

SimpleTags的autolink用下来感觉很不错,不过刚发布了几个中文Tags后发现中文的Tag竟然不支持自动添加Link。

估计是因为作者是老外,所以没考虑过中文方面的问题,网上搜了下也找到了解决方案。

和之前《解决Simple Tags与Pre标签内容冲突问题》一文一样,本次修改也是针对于SimpleTags的inc/client.php(Simple Tags版本1.8)中的函数autoLinkTags的。

找到autoLinkTags下的foreach函数,并找到一个$match变量的定义

$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;

将该变量的定义改为

//add this to support Chinese Tags
$term_name_quote=preg_quote($term_name, "/");
if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$term_name_quote) == true
|| preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$term_name_quote) == true
|| preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$term_name_quote) == true)
{
   $match = "/" . $term_name_quote . "/"; //if it is a Chinese tag
}else{
   $match = "/\b" . $term_name_quote . "\b/".$case;
}

其实也就是判断tag是否为中文,如果是中文则改变下输出形式。

改完后保存即达到了让autolink支持中文的效果了~

解决Simple Tags与Pre标签内容冲突问题

2011年1月1日 影木 没有评论

作为一个技术型的Blog,经常需要在网页里插入代码。Wordpress中对于这方面还是很友好的,选用了一款国人基于SyntaxHighlighter修改而来的Syntax Highlighter Optimized, 效果的确是不错,但是由于使用了Simple Tags插件的auto link功能,麻烦的问题接踵而至:

由于SyntaxHighlighter插件需要将代码片放于<pre></pre>标签之中,而Simple Tags的auto link又会在网页渲染时将tag的link(<a>标签以及相关)自动加在关键词的周围,导致这些被SimpleTags添加进去的 link也被直接显示在了网页之中(pre标签的效果)。

我在网上搜索了下发现有相关的是基于修改Highlighter插件的,不过怎么看都觉得问题是出在SimpleTags上,因此我还是研究了SimpleTags的生成Content部分的代码,并在这个基础上进行修正冲突。

首先是找到inc/client.php(Simple Tags版本1.8)中的函数autoLinkTags,该函数为最终替换content内容的函数,在foreach进行tag内容替换前加入以下内容:

	//replace <pre> to {rp_pre_N} === begin =====
	preg_match_all('/<pre[^>]*>([\s\S]*?)<\/pre>/i', $content, $result);
	$matchPre = $result[0];
	if(!empty($matchPre)) {
		$i = 0;
		foreach($matchPre as $r) {
			$content = str_replace($r, "{rp_pre_".$i++."}", $content);
		}
	}
	//replace <pre> to  {rp_pre_N} ==== end =====

阅读全文…

WordPress主題修改小記

2010年12月30日 影木 2 条评论

选用了比较简洁外加比较著名的NeoEase系列主题之一iNove,不过这个版本似乎算比较老的,所以我做了几个主要的改动,草草记录之~

让iNove主题支持WP3菜单栏

首先是添加WP3菜单栏支持和设置选项。
在function.php中增加

if (function_exists ( 'add_theme_support' )){
add_theme_support( 'nav-menus' );
register_nav_menu ( 'bois_navmenu', 'Navigation Menu' );

修改主题可在WP3的菜单中注册,该函数可提供多个名称即多个WP3菜单的注册。
并在之后设置Form中找到设置面板中选择菜单模式的table (可以搜索Menubar),加入一个Label:

<label>
	<input name="menu_type" type="radio" value="wpmenus" <?php if($options['menu_type'] == 'wpmenus') echo "checked='checked'"; ?> />
	<?php _e('Show WordPress 3.0 menu as menu.', 'inove'); ?>
</label>

阅读全文…