所有由cdyy发布的文章

WordPress主题汉化翻译教程,你也是一位wordpress达人。

很多达人为Wordpress开发了主题,国内外经典主题比比皆是。但是优秀的汉字始终是咱们的根基,使用外国哥们儿的主题当然还是把它改成中文比较好。

开始教你如何成为一位wordpress主题汉化达人。

第一步,找到你要汉化的内容。然后改成相对应的中文,雷人点没关系,确实能体现出你的个性。

第二部,另存为替换原文件,设置编码为UTF-8,确定保存。这步很重要,编码必须是UTF-8,否则将出现乱码。

第三部,刷新,哈哈!看看你修改的地方,是不是已经成为中文了。

第四步,恭喜,你已经成为了一位wordpress达人了。

如有不懂,或者疑难问题,欢迎给我留言。

八款WordPress开发设计插件推荐

WordPress引人瞩目的其中一个最大因素就是围绕这个内容管理系统而进行的开发也不尽其数。由于WordPress自身的灵活性,设计师和程序员可以制作出各种富于灵感的WordPress设计 。如果你也想学习如何制作WordPress主题创造出精美的设计,这里有几款插件可以帮助你出色地完成WordPress设计的开发:

1. 主题开关和预览(Theme Switch & Preview)
继续阅读

最近无聊也算是无聊的终结

昨天把之前做的两款主题,ColorliveColorlivewww.6kg.cn使用)和Rrecollection(仿国外一款免费模版)提供出来下载。然后把之前的T.QQBlueSpeech全部优化,重新提供给网友。今年4月份开始接触wordpress,便迷上了它,它的强大,它的自由,它太棒了!

下一步可能不会跟从前一样,有大量的空余时间让我自由使用。主题的量应该不会在增长,只能从质入手,把每一款主题打造的更加完美。在这里也要谢谢网友们和广大wordpress爱好者的支持。谢谢

禁用WordPress文章修订版本和自动保存功能

大家在发表和编辑文章的时候,可能都不喜欢WordPress 自动保存(AutoSave)和文章历史修订版本(Revisions)的功能。一方面网速不好的时候,它会影响编辑和发表文章页面的加载速度;另一方面这些文章的历史修订版本都会写入数据库保存,无形中大大增加了数据库的膨胀速度,冗余数据太多也影响数据库的存取查询效率。wp管理后台并没有提供关闭功能选项。那么如何禁用WordPress自动保存和文章历史修订版本功能呢?这也是WordPress优化数据库第一步要做的内容。

首先我们可以使用WordPress插件,禁用自动保存和关闭文章修订版本的插件有很多,本文最后列举了几个供参考。如果你不想安装插件,那也可以手动修改代码关闭和禁用WordPress自动保存和文章修订版本功能。

关闭WordPress 自动保存功能(AutoSave)

个人觉得WordPress自动保存功能对于经常写原创文章的wper来说还是比较实用的。有时候花了很长时间写一篇博客文章,若突然碰到停电,电脑死机之类的突发情况,没有自动保存那将是很郁闷的事情,所以建议最好还是不要禁用WordPress自动保存功能。如果你是用office word文档等其他编辑器,那就完全可以用下面的方法关闭WordPress自动保存功能:

找到wordpress/wp-admin/目录下的post-new.php,post.php,page-new.php,page.php这四个文件。找到代码

wp_enqueue_script(‘autosave’);

直接删除,或者在前面加上”//”将代码注释掉。

或者打开wp-config.php文件,在

require_once(ABSPATH . ‘wp-settings.php’);

前添加这段代码:

define(‘AUTOSAVE_INTERVAL’, 3600 );

AUTOSAVE_INTERVAL表示自动保存的时间间隔,3600表示1个小时,时间随意设,1小时差不多也写完了。

禁用WordPress文章历史修订版本(Revisions)

同关闭自动保存功能一样,在wp-config.php中的代码

require_once(ABSPATH . ‘wp-settings.php’);

前增加以下代码:
define(‘WP_POST_REVISIONS’,false);
即可;

清理数据库中以前的文章历史修订版本

另外你也可以通过phpmyadmin定期清理和删除数据库中的冗余文章修订版本,清理以前的文章修订版本也一样。数据库操作前最好先进行备份。在 phpmyadmin 中进行数据库管理,SQL语句命令行中写入以下运行代码执行(若你设置了数据库表名的前缀,需要将数据表名称中wp改成你的前缀):

delete from wp_posts where post_type=’revision’;

另外还可以再用SQL语句:

DELETE FROM wp_postmeta WHERE meta_key= ‘_edit_lock’;

DELETE FROM wp_postmeta WHERE meta_key =’_edit_last’;

删除数据库中文章特殊数据表wp_postmeta中meta_key字段为_edit_lock(代表上次修改post的修改时间)和_edit_last(指最后一次编辑时间)的数据,然后全选所有表,下拉列表中选择使用phpmyadmin“优化表”功能。

WordPress区分置顶文章

很多博客都有自己的置顶文章,在默认情况下WordPress对置顶文章只是将它们的位置排在前面,除了位置差异外,跟其他文章是没有任何区别的。那我们怎样才能将它们区别开来呢?我这里有几种方法:

一、在标题处添加 “置顶” 字样
其实我们这篇文章要用到的函数也只有一个is_sticky(),这个函数用于判断该文章是否为置顶文章。置顶文章一般也只在首页显示,那现在就打开你的主题目录下的index.php,查找:the_title(); 然后将其改成:

the_title(); if( is_sticky() ) echo '  置顶';

二、置顶文章不显示文章摘要

同样是打开index.php,查找:the_contentthe_excerpt,给它添加一个判断,这样置顶文章就不显示摘要了,如:

if( !is_sticky() ) the_content(....);

if( !is_sticky() ) the_excerpt(....);

三、给置顶文章添加边框或背景等

这个方法不需要判断是否为置顶文章,我们只需给它添加一个CSS样式即可。打开主题目录下的index.php,找到每篇文章所在的div,一般的主题查找:class=”post” 这个div就是每篇文章所在的div了,我们现在给个这个div添加一个类:

class="post">

如果是置顶文章,会自动给这个div添加一个类.sticky,我们现在打开主题目录下的style.css,添加类属性:

.sticky {
background: #ff0000;
border: 1px solid #ccc;
}

WordPress mb_strimwidth() 函数 截断补充

文章转自:http://wange.im/
强烈推荐mb_strimwidth() 函数进行截断,对于中文用户来说,这个函数是相当实用的,因为很多摘要的方法都会把中文字截断出乱码,因为中文字在 UTF-8 编码下占三个长度,是一个很尴尬的数字。8过,并不是所有主机都默认支持这个函数的,前提是要开启 mb_string 这个模块。那如果主机没有开启 mb_string 就不能使用 mb_strimwidth() 函数了吗?有没有变通的办法呢?答案当然是 YES,于是也就有了本文。

  先在 WordPress 主题的 functions.php 文件中添加如下代码:

function dm_strimwidth($str ,$start , $width ,$trimmarker ){
    $output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
    return $output.$trimmarker;
}

  接下来在需要的地方调用如下:

post_content),0,200,'......[阅读全文]');?>

用过 mb_strimwidth() 函数的朋友已经发现了,这个新建的函数和 mb_strimwidth() 的用法是一模一样的,如果你的主机不支持 mb_string 扩展库,那可以试试本文的方法。

willin版相关文章代码写成函数 函数修改zww.me

文章转载:http://zww.me

把下面的代码扔进主题的 functions.php 里面:

/* Related Posts 函数:出自kan.willin.org,函数修改zww.me */
function RelatedPosts($post_num = 5) {
	if(is_single()) {//只在文章页使用
		$related_posts = '

Related Posts:

    '; //$exclude_id = $post->ID; // 單獨使用要開此行 $posttags = get_the_tags(); $i = 0; if ( $posttags ) { $tags = ''; foreach ( $posttags as $tag ) $tags .= $tag->name . ','; $args = array( 'post_status' => 'publish', 'tag_slug__in' => explode(',', $tags), // 只選 tags 的文章. 'post__not_in' => explode(',', $exclude_id), // 排除已出現過的文章. 'caller_get_posts' => 1, 'orderby' => 'comment_date', // 依評論日期排序. 'posts_per_page' => $post_num ); query_posts($args); while( have_posts() ) { the_post(); $related_posts .= '
  • '.get_the_title().'
  • '; $exclude_id .= ',' . $post->ID; $i ++; } wp_reset_query(); } if ( $i < $post_num ) { // 當 tags 文章數量不足, 再取 category 補足. $cats = ''; foreach ( get_the_category() as $cat ) $cats .= $cat->cat_ID . ','; $args = array( 'category__in' => explode(',', $cats), // 只選 category 的文章. 'post__not_in' => explode(',', $exclude_id), 'caller_get_posts' => 1, 'orderby' => 'comment_date', 'posts_per_page' => $post_num - $i ); query_posts($args); while( have_posts() ) { the_post(); $related_posts .= '
  • '.get_the_title().'
  • '; } wp_reset_query(); } $related_posts .= '
'; return $related_posts; } }

(里面的5就是显示相关的文章数量)

willin的相关文章代码

文章转载:http://zww.me

这段代码有2个与众不同的地方:
1.
先取每个 tags 的文章,
当 tags 文章数量不足,
再取 category 补足。

2.
使用 $post 暂存,
代码放在网页任何地方都不不会搞乱 $post 顺序。

使用方法很简单,
直接将下面的代码复制到需要使用的地方即可:

相关文章:

    ID ) ) { foreach ( get_the_tags( $post->ID ) as $tag ) $tags .= $tag->name . ','; $tags = strtr(rtrim($tags, ','), ' ', '-'); $myposts = get_posts('numberposts='.$post_num.'&tag='.$tags.'&exclude='.$post->ID); foreach($myposts as $post) { setup_postdata($post); ?>
  • ID ) as $cat ) $cats .= $cat->cat_ID . ','; $cats = strtr(rtrim($cats, ','), ' ', '-'); $myposts = get_posts('numberposts='.$post_num.'&category='.$cats.'&exclude='.$post->ID); foreach($myposts as $post) { setup_postdata($post); ?>

解决Discuz! 7.2_FULL(含UCenter)后台ucenter空白

http://dfweb.net/上次打了补丁后论坛页显示正常,但是进到后台点UCenter的时候,发现页面显示空白

有以下几个解决方案

请在操作前做好备份

方法1:

我们知道,在安装时,程序后检查 相应目录的权限,并提示,在安装Discuz! 7.2_FULL(含UCenter)时,会检查如下目录是否可写,如果不可写的话,则无法安装

./templates

./attachments

./forumdata

./forumdata/cache

./forumdata/templates

./forumdata/threadcaches

./forumdata/logs

如果只是把上述目录按要求可写之后,安装后Ucenter则出现空白的情况,因此,在对目录权限进行设置时,还需把以下目录的权限改成可写:

.uc_server/data

.uc_server/data/cache

.uc_server/data/view

.uc_server/data/avatar

.uc_server/data/logs

.uc_server/data/backup

.uc_server/data/tmp

这样再进行程序的安装,Ucenter就可以顺利登录了。

方法2:

本程序用于解决由于误操作导致UCenter配置文件(UCenter根目录的./data/config.inc.php)丢失的问题

使用方法:到discuz.net搜索下载repirconfig.php,上传到UCenter根目录下,然后在通过http://UCenter访问地址/repirconfig.php执行

说明:

1、本升级程序重新生成UCenter的配置文件./data/config.inc.php,使用前请确定已经安装过UCenter;

2、本程序不对填写的数据库信息是否正确进行检查,不对数据库进行任何操作,请在事情前确定数据库信息正确无误;

3、如果已经存在./data/config.inc.php,本程序会直接覆盖原有的文件,请在执行本程序前备份该文件。

方法3:

方法①上传repirconfig.php(UC配置信息修复工具)到uc_server目录下,重新修复ucenter的配置

这个方法大家可以试试,但是这个你会发现它又要求修改权限为777.这样不是跟上面的矛盾了吗。

所以如果出现了上面的问题就不要走这一步!

方法②上传tools.php(DZ工具箱TOOL2009)到uc_server目录下(先设置好登录密码 ) 在IE中输入http://域名/uc_server/tools.php→选择“找回管理员”→输入新密码—-提交(确定) 这个时候,应该能打开UC界面了.不过用完了一定记得锁下。为了安全。 不要说 我根本没忘记密码啊。NO ..现在你没忘记也改,那样保证能进入uc了!

方法4:

1、上传repirconfig.php(UC配置信息修复工具)到论坛根目录下。

重新修复ucenter的配置。在IE中输入http://域名/uc_server/repirconfig.php。打开重新配置页面,输入数据库名,用户名,表前缀(这个一定要仔细看清楚,不知道的话,在论坛根目录下的config.inc.php中有,用记事本打开,最下方的信息里面,define(‘UC_DBTABLEPRE’, ‘cdb_uc_‘);就是这一个),都输入好后,点提交(确定)。这个会把uc_server下的config.inc.php给覆盖。没有的话,会自动新建立一个。[上方会有红色的提示。貌似语句不通,不要紧,说明已经重新配置完成]

2、上传tools.php(DZ工具箱TOOL2009)到uc_server目录下(先设置好登录密码 )

在IE中输入http://域名/uc_server/tools.php—–选择“找回管理员”—-输入新密码—-提交(确定)

这个时候,应该能打开UC界面了。进行第三步。

3、在IE中输入http://域名/uc_server/ ——–登录进入UCenter——–应用管理—–点击论坛名称后面“编辑”,

在应用管理页面,你会发现,显示的是通信失败。不要紧,进入详细配置页面后,再最下方有一个应用的 UCenter 配置信息框。把里面的UC配置信息复制。

4、把论坛根目录下的config.inc.php下载到本地,用记事本打开。把最下面的UC信息(//====横线下方)替换成你刚才从UCENTER里复制的那些信息。保存,再上传到论坛根目录。覆盖config.inc.php

5、进入后台,更新缓存。

如何为文章添加分享按钮

越来越多的网站都在自己的文章页面中加入了分享按钮,主要是为了增加文章在读者群之间的关注度,从而达到提高网站流量的目的。本文就详细说下为文章添加分享按钮的方法

其实网上有很多添加分享按钮的方法,也有功能强大的插件来实现。但我本人是不主张使用插件的,原因也就是因为插件的功能太过于强大了,普通的用户根本用不着。即使插件提供了自定义的功能,但是过于臃肿的图片和代码的在不经意间消耗了你的服务器带宽资源。

演示地址:http://www.6kg.cn/

为文章添加分享按钮的方法

1.在你要添加按钮的地方粘贴如下的 HTML 代码:


如果你使用的是 wordpress,想要加在文章的结尾处,那么直接打开文章页 single.php

查找类似如下代码:

the_content();

加到这行代码结尾处就可以了。

2.在你主题的 css 文件中加入如下的 CSS 代码:

#share,#share a{line-height:16px}
#share a{display:inline-block;width:16px;height:16px;text-indent:-999em;cursor:pointer;margin-left:5px;background:url(http://photo.tuhigh.com/pics/1044/1024/187252t1287897845550_o.png) no-repeat}
#share a#facebook-share{background-position:0 0}
#share a#twitter-share{background-position:0 -16px}
#share a#delicious-share{background-position:0 -32px}
#share a#kaixin001-share{background-position:0 -48px}
#share a#renren-share{background-position:0 -64px}
#share a#douban-share{background-position:0 -80px}
#share a#sina-share{background-position:0 -96px}
#share a#netease-share{background-position:0 -112px}
#share a#tencent-share{background-position:0 -128px}

3.将如下的 JavaScript(jQuery) 代码添加到你的JS文件中
请查看:如何在 WordPress 中使用 jQuery

JavaScript

function addListener(node, type, listener, obj) {
	var param = obj || {};

	if(node.addEventListener) {
		node.addEventListener(type, function(ev){listener(ev, param);}, false);
		return true;
	} else if(node.attachEvent) {
		node['e' + type + listener] = listener;
		node[type + listener] = function() {
			node['e' + type + listener](window.event, param);
		};
		node.attachEvent('on' + type, node[type + listener]);
		return true;
	}
	return false;
}

function getParamsOfShareWindow(width, height) {
	return ['toolbar=0,status=0,resizable=1,width=' + width + ',height=' + height + ',left=',(screen.width-width)/2,',top=',(screen.height-height)/2].join('');
}

function bindShareList() {
	var link = encodeURIComponent(document.location); // 文章链接
	var title = encodeURIComponent(document.title.substring(0,76)); // 文章标题
	var source = encodeURIComponent('网站名称'); // 网站名称
	var windowName = 'share'; // 子窗口别称
	var site = 'http://www.example.com/'; // 网站链接

	addListener(document.getElementById('facebook-share'), 'click', function() {
		var url = 'http://facebook.com/share.php?u=' + link + '&t=' + title;
		var params = getParamsOfShareWindow(626, 436);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('twitter-share'), 'click', function() {
		var url = 'http://twitter.com/share?url=' + link + '&text=' + title;
		var params = getParamsOfShareWindow(500, 375);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('delicious-share'), 'click', function() {
		var url = 'http://delicious.com/post?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(550, 550);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('kaixin001-share'), 'click', function() {
		var url = 'http://www.kaixin001.com/repaste/share.php?rurl=' + link + '&rcontent=' + link + '&rtitle=' + title;
		var params = getParamsOfShareWindow(540, 342);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('renren-share'), 'click', function() {
		var url = 'http://share.renren.com/share/buttonshare?link=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(626, 436);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('douban-share'), 'click', function() {
		var url = 'http://www.douban.com/recommend/?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(450, 350);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('sina-share'), 'click', function() {
		var url = 'http://v.t.sina.com.cn/share/share.php?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(607, 523);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('netease-share'), 'click', function() {
		var url = 'http://t.163.com/article/user/checkLogin.do?link=' + link + 'source=' + source + '&info='+ title + ' ' + link;
		var params = getParamsOfShareWindow(642, 468);
		window.open(url, windowName, params);
	});

	addListener(document.getElementById('tencent-share'), 'click', function() {
		var url = 'http://v.t.qq.com/share/share.php?title=' + title + '&url=' + link + '&site=' + site;
		var params = getParamsOfShareWindow(634, 668);
		window.open(url, windowName, params);
	});
}

bindShareList();

jQuery (JavaScript 和 jQuery 代码任选其一)

function getParamsOfShareWindow(width, height) {
	return ['toolbar=0,status=0,resizable=1,width=' + width + ',height=' + height + ',left=',(screen.width-width)/2,',top=',(screen.height-height)/2].join('');
}

function bindShareList() {
	var link = encodeURIComponent(document.location); // 文章链接
	var title = encodeURIComponent(document.title.substring(0,76)); // 文章标题
	var source = encodeURIComponent('网站名称'); // 网站名称
	var windowName = 'share'; // 子窗口别称
	var site = 'http://www.example.com/'; // 网站链接

	jQuery('#facebook-share').click(function() {
		var url = 'http://facebook.com/share.php?u=' + link + '&t=' + title;
		var params = getParamsOfShareWindow(626, 436);
		window.open(url, windowName, params);
	});

	jQuery('#twitter-share').click(function() {
		var url = 'http://twitter.com/share?url=' + link + '&text=' + title;
		var params = getParamsOfShareWindow(500, 375);
		window.open(url, windowName, params);
	});

	jQuery('#delicious-share').click(function() {
		var url = 'http://delicious.com/post?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(550, 550);
		window.open(url, windowName, params);
	});

	jQuery('#kaixin001-share').click(function() {
		var url = 'http://www.kaixin001.com/repaste/share.php?rurl=' + link + '&rcontent=' + link + '&rtitle=' + title;
		var params = getParamsOfShareWindow(540, 342);
		window.open(url, windowName, params);
	});

	jQuery('#renren-share').click(function() {
		var url = 'http://share.renren.com/share/buttonshare?link=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(626, 436);
		window.open(url, windowName, params);
	});

	jQuery('#douban-share').click(function() {
		var url = 'http://www.douban.com/recommend/?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(450, 350);
		window.open(url, windowName, params);
	});

	jQuery('#sina-share').click(function() {
		var url = 'http://v.t.sina.com.cn/share/share.php?url=' + link + '&title=' + title;
		var params = getParamsOfShareWindow(607, 523);
		window.open(url, windowName, params);
	});

	jQuery('#netease-share').click(function() {
		var url = 'http://t.163.com/article/user/checkLogin.do?link=' + link + 'source=' + source + '&info='+ title + ' ' + link;
		var params = getParamsOfShareWindow(642, 468);
		window.open(url, windowName, params);
	});

	jQuery('#tencent-share').click(function() {
		var url = 'http://v.t.qq.com/share/share.php?title=' + title + '&url=' + link + '&site=' + site;
		var params = getParamsOfShareWindow(634, 668);
		window.open(url, windowName, params);
	});
}

bindShareList();

www.6kg.cn
我是在footer.php

前面加入

成功实现

如何在 WordPress 中使用 jQuery

使用 jQuery 可以通过很简单的代码实现一些非常实用的效果,如:网页中双击滚屏、评论双击可编辑、一些好看的弹出层等等。说下如何在 wordpress 中使用 jQuery。

什么是 jQuery?

简单的说 jQuery 就是 Javascript 框架,使用 jQuery 的宗旨就是写更少的代码,做更多的事情。在 WordPress 中合理的运用 jQuery,可以实现很多实用的效果。

如何在 WordPress 中使用 jQuery?

1.首先要加载 jQuery 库

这步很简单,你只需要在你使用的 WordPress 主题的 header.php 文件的 head 标签中加入如下代码即可:

可以把 google 上的 jQuery 库下载到本地再加载。

2.在主题中调用 .js 文件

新建立一个 .js 文件,在文件中加入如下代码:

jQuery(document).ready(function($){
// 这里就是你需要添加的教程中提到的一些 jQuery 代码
});

最后在主题中调用这个 .js 文件,假设你建立的文件名为 all.js,那么直接在主题文件 header.php 中的 head 区域添加如下样式代码即可:

文章转载:园子博客 http://www.yzznl.cn/

Godaddy空间实现phpwind伪静态

进入phpwind后台,核心设置中的静态目录部署页,将静态目录设为-htm-,静态目录扩展名设置为.html。然后修改根目录或者phpwind所在目录下的.htaccess,没有的话百度google搜去下去。

在.htaccess内加入如下代码

  

# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /bbs 为你的论坛目录地址,如果程序放在根目录中,请将 /bbs 修改为 /
RewriteBase /bbs
# Rewrite 系统规则请勿修改
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
RewriteRule ^(.*)/htm/(.*)$ $1.php?$2
RewriteRule ^(.*)simple/([a-z0-9\_]+\.html)$ $1/simple/index.php?$2

保存 刷新即可。

discuz X IIS、Nginx、Apache下如何实现伪静态 静态规则

在管理后台,全局 » 优化设置 » 搜索引擎优化 选中url静态化的选项即可,相关规则文件官方已经出示例,摘录如下:

IIS-Isapi

[ISAPI_Rewrite]

[ISAPI_Rewrite]

# 3600 = 1 hour
CacheClockRate 3600

RepeatLimit 32

# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
RewriteRule ^(.*)/topic-(.+)\.html\?*(.*)$ $1/portal\.php\?mod=topic&topic=$2&$3
RewriteRule ^(.*)/article-([0-9]+)\.html\?*(.*)$ $1/portal\.php\?mod=article&articleid=$2&$3
RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html\?*(.*)$ $1/forum\.php\?mod=forumdisplay&fid=$2&page=$3&$4
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forum\.php\?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&$5
RewriteRule ^(.*)/group-([0-9]+)-([0-9]+)\.html\?*(.*)$ $1/forum\.php\?mod=group&fid=$2&page=$3&$4
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html\?*(.*)$ $1/home\.php\?mod=space&$2=$3&$4
RewriteRule ^(.*)/([a-z]+)-(.+)\.html\?*(.*)$ $1/$2\.php\?rewrite=$3&$4

Apache

# 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /discuz

# Rewrite 系统规则请勿修改
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2

Nginx Web Server

rewrite ^(.*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^(.*)/article-([0-9]+)\.html$ $1/portal.php?mod=article&articleid=$2 last;
rewrite ^(.*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^(.*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^(.*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3 last;

代码实现WordPress归档页面模板

文章转载:http://zww.me/

特点:

1. 这个存档函数会在数据库生成一个表 SHe_archives_25216,用来保存在文章新发表/删除文章时生成的 html,这主要是加快访问速度,不用每次都要查询数据库生成归档。

2. 显示每月文章数

3. 显示每篇文章的评论数

效果: http://zww.me/archives

详细步骤

1. 把下面的 archives_list_SHe 函数代码扔进主题的 functions.php 里面。

function archives_list_SHe() {
     global $wpdb,$month;
     $lastpost = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC LIMIT 1");
     $output = get_option('SHe_archives_'.$lastpost);
     if(empty($output)){
         $output = '';
         $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'SHe_archives_%'");
         $q = "SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM $wpdb->posts p WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC";
         $monthresults = $wpdb->get_results($q);
         if ($monthresults) {
             foreach ($monthresults as $monthresult) {
             $thismonth    = zeroise($monthresult->month, 2);
             $thisyear    = $monthresult->year;
             $q = "SELECT ID, post_date, post_title, comment_count FROM $wpdb->posts p WHERE post_date LIKE '$thisyear-$thismonth-%' AND post_date AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC";
             $postresults = $wpdb->get_results($q);
             if ($postresults) {
                 $text = sprintf('%s %d', $month[zeroise($monthresult->month,2)], $monthresult->year);
                 $postcount = count($postresults);
                 $output .= '
  • ' . $text . '  (' . count($postresults) . ' ' . __('篇文章','freephp') . ')
      ' . "\n"; foreach ($postresults as $postresult) { if ($postresult->post_date != '0000-00-00 00:00:00') { $url = get_permalink($postresult->ID); $arc_title = $postresult->post_title; if ($arc_title) $text = wptexturize(strip_tags($arc_title)); else $text = $postresult->ID; $title_text = __('View this post','freephp') . ', "' . wp_specialchars($text, 1) . '"'; $output .= '
    • ' . mysql2date('d日', $postresult->post_date) . ': ' . "$text"; $output .= ' (' . $postresult->comment_count . ')'; $output .= '
    • ' . "\n"; } } } $output .= '
' . "\n"; } update_option('SHe_archives_'.$lastpost,$output); }else{ $output = '
'. __('Sorry, no posts matched your criteria.','freephp') .'
' . "\n"; } } echo $output; }

2. 复制一份主题的 page.php 更名为 archives.php,然后在最顶端加入:


再然后找到类似 ,在其下面加入如下代码

全部展开/收缩

进wp后台添加一新页面,在右侧栏模板选择 archives

3. 如果你的主题本身加载了 jQuery 库,那么继续把下面的 jQ 代码加上去,就会有滑动伸缩效果了

/* 存档页面 jQ伸缩 */
 $('#expand_collapse,.archives-yearmonth').css({cursor:"s-resize"});
 $('#archives ul li ul.archives-monthlisting').hide();
 $('#archives ul li ul.archives-monthlisting:first').show();
 $('#archives ul li span.archives-yearmonth').click(function(){$(this).next().slideToggle('fast');return false;});
 //以下下是全局的操作
 $('#expand_collapse').toggle(
 function(){
 $('#archives ul li ul.archives-monthlisting').slideDown('fast');
 },
 function(){
 $('#archives ul li ul.archives-monthlisting').slideUp('fast');
 });

存档页面插件 可省略。

css 样式可以通过 #archive 来定义

某段时间内的读者墙

文章转载:http://zww.me/

说明:核心部分就是代码中时间显示部分代码,2010-09-01 00:00:00 是结束时间,43664 MINUTE 是指统计范围为 2010.9.1 0:00 前30天过7小时44分内,其实就是 2010.8.1 16:16 ~2010.8.31 24:00这个时段啦。

    get_results(" SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( '2010-09-01 00:00:00', INTERVAL 43664 MINUTE ) AND user_id='0' AND comment_author_email != $my_email AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT $limit_num "); foreach ($counts as $count) { $c_url = $count->comment_author_url; if ($c_url == '') $c_url = $noneurl; $mostactive .= '
  • ' . ''.get_avatar($count->comment_author_email,$size='40').'
  • '; } echo $mostactive; ?>

一些例子:

1. 2010.8.18~2010.8.20内的读者墙:date_sub( ‘2010-08-20 00:00:00’, INTERVAL 3 DAY)

2. 最近一周内:date_sub(NOW(), INTERVAL 1 WEEK)

……

====================================

附:SQL 的 date_sub() 函数

DATE_SUB() 函数从日期减去指定的时间间隔。

语法

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式;expr 参数是您希望添加的时间间隔。

Type 值

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

====================================