Blog Archives

Sep 07

以前写的插件,两年后基本都有比我写的更好的替代了,不过这个类型的我倒是还没见过,所以炒现饭炒过来。

FavLinks这个WordPress插件的核心功能都来自YugDesignFavorite Links这个JavaScript脚本,感谢作者的创意和努力。

FavLinks可以给访问你Blog的人即时记录收藏本站文章链接的功能,比如今天看到一些文章,没时间看完了,可以纪录下来,或者搜索的时候把感兴趣的文章记录下来以后慢慢看;这些记录都存放在 Cookie 里面,访问者只要通过同一台机器再次访问你的 Blog ,他的收藏就会在 Your Favorite List 中出现(默认保留 10 条记录)。当然通过 Cookie 记录有好有不好,好在不用强迫用户注册,不好的地方就是用户必须用同一台机器登录,而且不能超过 7 天(插件默认设置)。当然,我个人认为,它和del.icio.us那种是有区别的。

安装与设置

下载 FavLinks,解压后把整个 favlinks 目录上传到你的 WordPress 插件目录,通常是:/wp-content/plugins/;然后到后台激活 FavLinks 这个插件。

在相应的地方添加显示收藏和添加收藏的代码:

1.添加显示收藏的代码:

通常在侧边栏也就是 sidebar.php 中添加这个代码,如下:


<li><!-- favlinks -->
	<h2>私人收藏</h2>
<?php fav_show_refresh(); ?>
</li><!--end of favlinks-->

2.添加加入收藏的链接:

就是要在文章合适的地方添加一个快捷方式,让用户能方便的添加到自己的 Favorite List 内。建议在首页和搜索结果页面,以及存档(Archives)页面添加;需要添加的代码如下:


<a title="Add to Your Favorite List" href="javascript:addFavorites('<?php the_title(); ?>','<?php the_permalink() ?>');">FavLinks</a>

例如 index.php ,找到:


<p class="postmetadata"><!-- Here goes the metadata of your post-->
<?php edit_post_link('#','','| '); ?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_time('Y/m/d') ?></a> | <?php the_category(' - ') ?> | <a href="<?php trackback_url(display); ?>">Trackback</a> | <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?>

后添加上述代码;其它 search.php ,Archives.php 都类似,就不一一叙述了。

如何使用:

点击需要暂存文章的 FavLinks ,确认对话框,系统就会自动把这篇文章的链接添加到你的 Favorite List 里面去,以后再来这个网站,这些文章链接都会出现在 Your Favorite List 里面。

参考:

Internet Explorer 将每个域 cookie 限制从 20 增加至 50


Sep 03

WP Pane 的演示界面

总感觉要显示的东西越来越多,版面越做越花,唉,往好的方面想,我还没老~.~

所以有了这个插件,它把信息分类放入几个TAB栏中,可以方便的缩小大量信息对版面占用。具体效果可以参考我右边侧边栏的“最近文章,热门文章”,还有单文章页面下面的“参考文章”。

这个插件的核心文件来自 webfx.eae.net 的 Tab Pane,首先得感谢它们写出这么好的东西。

安装以及使用:

下载附件,然后上传到你的插件目录,通常都是 Plugins 啦,然后在后台激活这个插件。

首先,你得在心中整理一下你要怎么处理你的信息,这些信息原本是如何输出的,还有你想怎么放置它们。

我们这里以我自己的侧边栏和单页文章举例子:在侧边栏(sidebar),我想把“热门文章”和“最近的文章”整合到一起,而在单页(single page)整合“标签相关的文章”,“内容相关的文章”和“随机文章”,它们对应的输出函数是:

热门文章-->get_most_viewed 来自插件simple-tagging
最近文章-->get_recent_posts_only 来自插件“中文WordPress工具箱”,由桑葚编写;
标签相关文章-->STP_RelatedPosts 同样来自simple-tagging;
内容相关文章-->related_posts 来自Related Posts
随机文章-->random_posts 则是中文WordPress工具箱带的。

对于侧边栏的内容,WP Pane 提供了下面这个函数:


wp_tabpane_sidebar($titlea,$titleb,$funa,$funb,$cana='',$canb='')

它支持两个需要输出的内容也就是两个TAB,$titlea,$titleb分别为两个内容的标题,以上为例对应的就是就是"热门文章“和”最近文章“,$funa,$funb则是对应的函数名,分别为get_most_viewed,get_recent_posts_only,$cana='',$canb=''则是引用对应函数的参数,比如我现在要显示最近的10篇文章,则$canb值为10,综上,我们在侧边栏文件(通常是你模板文件目录下的sidebar.php),加上如下内容就可以了:


<li><h2>文章</h2>
   <?php
    wp_tabpane_sidebar('热门文章','最近文章','get_most_viewed', 'get_recent_posts_only','',10);
   ?>
</li>

而对于单页面,WP Pane提供的输出函数是:


wp_tabpane_show($titlea, $titleb, $titlec, $funa, $funb, $func)

支持三个TAB也就是输出三个不同内容,但是目前不支持引入参数(有些问题没解决),你可以在原本的插件设置好后(通常都有)再用WP Pane来输出。

修改单页面文件(通常是你模板目录的single.php)文件,在合适的地方加入以下代码:


<!-- WP-Tabpane-->
         <?php if (function_exists('wp_tabpane_show')) : ?>
	<h2>您还可以参考以下文章:</h2><br />
	<?php wp_tabpane_show('标签相关','内容相关','随机文章','STP_RelatedPosts','related_posts','random_posts'); ?>
         <?php endif; ?>
<!-- End Pane-->

这样就可以了。

注意,WP Pane目前完美支持引入的函数,原本输出格式都为:


<li>这是内容1</li>
<li>这是内容2</li>
<li>......NNNN</li>

如果不是,则可能导致不可预料的后果,主要是会破坏页面结构。在下一版中可能做一个myfunciton.php的文件,方便使用者自己制作输出一些(非其它插件输出的)内容。


Sep 01

在WordPress使用过程中,有很多情况下,插件的javascript不止一个函数或者功能需要使用window.onload加载自己,我自己这个Blog就有数个,例如SearchNow,FacyToolTip,Google Code Prettify等,还有两个写在我js扩展文件里面的,一个用于转换target="_blank"到rel="external"的函数externallinks,以及去除所有点击虚线框的函数RemoveDotLine。

其实以前经常出问题,主要表现在突然我自己那两个函数不工作了,于是我找过很多关于加载多个windows.onload的文章,如以下列出的方法:


function womOn(){
window.onload = womGo;
}

function womGo(){
for(var i = 0;i < woms.length;i++)
eval(woms[i]);
}
function womAdd(func){
woms[woms.length] = func;
}
var woms = new Array();
/*Now Add Multi Functions:*/
womAdd('hideDiv("rightBox")');
womAdd('ajaxInit()');
womAdd('setHandler("tr","mo","onmouseover","rowHightlight")');
womOn();

以及:


function addOnloadEvent(fnc){
if ( typeof window.addEventListener != "undefined" )
window.addEventListener( "load", fnc, false );
else if ( typeof window.attachEvent != "undefined" ) {
window.attachEvent( "onload", fnc );
} else {
if ( window.onload != null ) {
var oldOnload = window.onload;
window.onload = function ( e ) {
oldOnload( e );
window[fnc]();
};
} else
window.onload = fnc;
}
}
/*Now Add Multi Functions:*/
addOnloadEvent(myFunctionName);
// Or to pass arguments
addOnloadEvent(function(){ myFunctionName('myArgument') });

最后:


function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();}
}
}
//Sample usage:
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
/* more code to run on page load */
});

有时候用其中一个问题就突然解决了,但实际上我不太明白如何解决的。

直到昨天使用Google Code Prettify这个代码高亮插件,又出了问题,我决心搞个明白。

开始我无论用上面哪种方法加载我的那两个函数,均不能成功,于是打开Google Code Prettify的文件,看它如何加载的,它用的是:


window.onload = function(){prettyPrint();};

于是我把那两个函数放进去:


window.onload = function(){
prettyPrint();
externallinks();
removedotline();
};

刷新页面,可以了。但是我不能靠一个插件来加载我自己的功能吧?

仔细想想,为什么FacyToolTip和SearchNow没有影响我的两个加载呢?

打开这两个插件的源文件一看,原来它们都没有用window.onload直接加载自己的函数,而是用了上面我列出的某种方式加载的。

最后解决方案:把我的两个函数放回我的那个扩展js中,用上面的方法加载,然后修改Google Code Prettify,也采用上面列出的的方法加载,刷新页面,可以了。

结论:在WordPress中,任意一个插件直接使用window.onload加载自己的函数,都会造成一定问题。

在那些罗列的加载方式中,它们考虑的都是普通用首页加载所有函数,而没有考虑到WordPress插件的分离性,所以没有提到这个问题。


Aug 31

Testor

Life | 2 评论 » | Trackback | FavLinks | 3,382 次阅读

我在玩Q3的时候经常死机或者系统崩溃,我该怎么办?

造成出错的原因是多方面的,试试下面的解决方案:

1.如果你在用GF4显卡,而且你的驱动是NV FORCEWARE 50.03-5303,请升级你的驱动到最新版本或者使用DETONATOR 45.23;已知5X.XX版本的驱动和Q3,PB是有冲突的;

2.检查你的CFG里面PB_SYSTEM参数的设定,通常设为"1"可以在游戏中得到较好的性能,但是如果在游戏中出现锁定或者死机现象,设为"0"试试;

3.CPU,显卡超频显然会影响系统的稳定性,可能在其他游戏没有表现出来,而在Q3或者Q3+PB的情况下就会死机;

4.如果你在WIN2000系统使用AMD的CPU,可能需要一个系统交换文件的补丁,可以去AMD官方下载.

http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_871_2367,00.html

5.在控制面板-多媒体属性-高级里面,降低声卡的硬件加速一格,通常可以解决一些问题.声霸LIVE!系列在5.1之前的版本可能会和ACPI有冲突,建议禁用ACPI和IRQ STEERING.

6.如果你在用AMD 750/751芯片的主板,在BIOS中禁用"SuperByPass";

7.在BIOS的显存(VIDEO MEMEORY)设置项目中,设置为UC而不是USWC;

8.一些主板和显卡并不能稳定的支持AGP 8X,4X,在BIOS中强制设定为4X,2X或者1X,这对玩Q3来说,没有什么可见的性能损失;

9.使用VIA,SIS,NVFORCE这些芯片组主板的,一定要使用最新的驱动.

10.PB在运行的时候会涉及到WINDOWS API(底层操作),而且比其他大多数软件可能要更深一层次.所以,在这种情况下,系统的不稳定会比通常情况更加容易暴露.以下可以帮助你修正和解决这些问题.

The player will show in this paragraph

如果你在NT4/2K/XP下面运行游戏,你可以尝试降低游戏的运行优先级.你可以在任务管理器里面右键选择你需要更改的游戏,在优先级选项选"低于正常";或者你可以通过命令行或者批处理文件,内容如: "start /belownormal g:\games\quake\quake3.exe"
来运行游戏.这样不会降低你游戏的性能(或者是很小的影响,这取决于你同时运行的其他程序的数量)

确定你使用的是最新版本的PB,你可以通过去www.evenbalance.com网站下载或是通过...控制台,输入/pb_ system 1 ,可以查看你当前运行的PB的版本信息.

在你进入游戏前,千万不要通过任务管理器来关闭其他程序,索性让他开着,或者用正常的途径关闭/退出这些程序.--------这里插一句,游戏前,关闭你的浏览器,例如MYIE,和病毒防火墙实时监控引擎,在Q3可以获得20-40FPS的提升. 应为通过任务管理器关闭的程序,虽然在任务管理器已经看不到,实际上还有线程可能在内存中运行,这种残余的线程与PB在一起会使系统不稳定.这里介绍一个免费软件ENAITALL,它可以正常关闭所有额外(指非WINDOWS运行必须)的程序,从而极大的减少在进行游戏的时候系统死机的几率.

检查你控制面板的 添加/删除程序 项目,尽量删除不必要的程序.已知 Norton Anti-Virus与PB可能会有冲突,如果你安装了,卸载它看看能不能解决问题.有些玩家通过这样解决了问题,而且重安装NV也不会出问题了.

一些后台程序,例如创新声霸卡LIVE的帮助程序,ATI显卡的键盘快捷程序.

一些玩家发现是病毒的影响,当他们杀毒以后系统死锁的现象没了.

试着在控制台调整你的PB_SLEEP参数值,取20,250或者500看看对你的游戏的故障性能有没有改善.有部分玩家通过调整这个参数解决了问题.

极端的情况,一部分玩家报告说他们通过更换内存条/声卡或者显卡才解决问题.

很多时候,特别是PB有升级文件的时候,在你第一次进入游戏前5秒到30秒不等,你的机器会很LAG甚至FPS变得很低,这是因为PB在编译它特殊的HTM文件到最终的DLL文件,请不要惊慌.


Aug 31

flickrRSS我就详细不介绍啦,就是从flickr抓自己的图显示在Blog里面的一个Wordpress Plugin。不过现在使用flickrRSS的会发现图片都是大大小小的红X。。

目前能通过yahoo静态服务器访问,所以我们添加一个函数在里面,暂时可以让您的flickrRSS恢复青春:


//En,Let's Fuck G-r-e-a-t-e.F-i-r-e.W-a-l-l!
function jay_access_flickr($text) { //from Jay Access Flickr (http://www.jaylee.cn/wordpress-plugins/)
  $exchangeSource = array(
"/<img(.+?)src="http://static.flickr.com/(.*?)"(.*?)>/i",
"/<img(.+?)src="http://farm1.static.flickr.com/(.*?)"(.*?)>/i",	"/<img(.+?)src="http://farm2.static.flickr.com/(.*?)"(.*?)>/i",	"/<img(.+?)src="http://farm3.static.flickr.com/(.*?)"(.*?)>/i",
"/<img(.+?)src="http://68.142.213.135/(.*?)"(.*?)>/i",
"/<img(.+?)src="http://69.147.123.56/(.*?)"(.*?)>/i"
  );
  $exchangeDest = array(
"<img$1src="http://farm1.static.flickr.yahoo8.akadns.net/$2"$3>",
"<img$1src="http://farm1.static.flickr.yahoo8.akadns.net/$2"$3>",
"<img$1src="http://farm2.static.flickr.yahoo3.akadns.net/$2"$3>",
"<img$1src="http://farm3.static.flickr.yahoo3.akadns.net/$2"$3>",
"<img$1src="http://farm1.static.flickr.yahoo8.akadns.net/$2"$3>",
"<img$1src="http://farm2.static.flickr.yahoo3.akadns.net/$2"$3>"
  );
$text = preg_replace($exchangeSource,$exchangeDest,$text);
return $text;
}

主要参照了“Jay Access Flickr”的方法。

附注:修改的版本,基于 FlickrRSS 3.2,其它类似的插件都可以通过这个函数来替换特定位置来解决flick被墙的问题。


[4/5]  < 1 2 3 4 5 >