在SaBlog中轻松应用酷炫的图片展示方式LightBox

July 7th, 2007 / 爱好·网站建设 / 14851 条评论

刚刚用Sablog的时候,一开始就想把喜欢的LightBox图片展示效果应用于sablog,后来发现Wodi已做好了这件事,于是把他的东西照搬过来,发现一些问题,按照他提供的来修改的话,页面总会出错,有时候页面只显示了一小部分,一开始以为是我自己修改时的问题,于是按照他的思路改,终于可以用了,这几天又发现原来不只我一个人用了会出错,比如傻猫也是这样......傻猫那天跟我直接要了那几个改动过的文件,就在发给他文件之后,我偶然发现,其实那个特效还是有问题:

1、虽然点击图片以后是有效果出来,但是不能实现多张图片连续展示的效果,只能一张张的点击打开;

2、假如使用sablog中的编辑器为附件图片排版时,图片也是没有LightBox特殊

于是刚才仔细看了一下,发现其实实现的方法并不用像Wodi那样繁琐,按我现在用的这样稍微一下就行了:

1、下载下面的附件,解压到sablog的根目录下;

2、打开模板中的index.php,在</head>(最后不要改变这个位置,测试发现,在一些位置的话,加载js时会出错)之前加入以下代码:


XML/HTML代码

  1. <script type="text/javascript" src="/plugins/lightbox/js/prototype.js"></script>      
  2. <script type="text/javascript" src="/plugins/lightbox/js/scriptaculous.js?load=effects"></script>      
  3. <script type="text/javascript" src="/plugins/lightbox/js/lightbox.js"></script>      
  4. <link rel="stylesheet" href="/plugins/lightbox/css/lightbox.css" type="text/css" media="screen" />  

 

3、修改模版的show.php,找到:


PHP代码

  1. if ($article['image']) {  

在下面加上以下代码:


PHP代码

  1. if ($imagenum > 1){   
  2. $lightboxrel = "lightbox[roadtrip]";   
  3. }   
  4. else{   
  5. $lightboxrel = "lightbox";   
  6. }  

 

同时把图片的链接都加上rel="$lightboxrel"的属性
如:


XML/HTML代码

  1. <a href="attachment.php?id=$image[0]" target="_blank" rel="$lightboxrel">  

同理,以同样的代码修改normal.php

4,修改根目录的global.php,找到:


PHP代码

  1. global $article$attachmentids$options;   
  2. if ($article['image'][$aid]) {   
  3.     $attachmentids[]=$aid;  

 

在下面加上:


PHP代码

  1. $imagenum = count($article['image']);   
  2.         if ($imagenum > 1){   
  3.             $lightboxrel = "lightbox[roadtrip]";   
  4.         }   
  5.         else{   
  6.             $lightboxrel = "lightbox";   
  7.         }  

同时把图片的链接都加上rel="$lightboxrel"的属性

这样,LightBox的特效就能完美的应用于Sablog了!

演示可看:http://www.bluefeel.com/show-599-1.html

还是有人说不知道怎么改,汗, , 还是提供一下Global.php吧:global.php

 

按照自己的喜爱修改了一下Sablog

July 2nd, 2007 / 爱好·网站建设 / 11 条评论

人家说,工欲善其事,必先利其器,但是想想,我花时间改这种细节的东西,其实是无聊的表现,就算利器了,也未必会善其事!

不管怎样,记录一下,方便以后升级:


不想千篇一律的在所有的页面显示一样的侧边栏内容,于是在的提示下,利用$action == 'index'的判断使首页的侧边栏“与内页不同!

虽然影响加载速度,但是一直喜欢这个图片展示效果,WordPress用上了,这个当然不能不弄,呵呵!刚好发现已经有人Hack出来了:

3、后台Session时间
Sablog后台登陆的方式虽然是为了安全,但是个人感觉不像WordPress那样方便,频繁登陆不说,有时候还会丢掉写半天的东西,其实,这个我觉得不应该那样子,因为我想很少有人跑到别人的机子上去写自己的日志吧?
同样是在Sablog作者Angel的提示下,把admin/global.php中的1800(半小时)改成34200(24小时)

4、Google Adsense
加上Google 的广告单元,呵呵,纯属试验,大家千万不要点我 Blog上的广告啊,每次点我都可以收到美元的啊,哇哈哈!

5、改造Friend Links
想一想,还是不要改的好,以后升级会烦死,看了一下,发现SaBlog的一个好东西,自定义模板变量,嘿嘿,于是有了友情链接下面的“常去逛的地方”,不错,好的功能就要利用好!

6、增加MP3标签
生活是离开音乐的,至少mp3是需要的,加上这个功能,我的Blog才算完善,嘿嘿!
之前发现Tension已Hack出来了,嘿嘿,真好!
http://www.sablog.net/bbs/viewthread.php?tid=1285&extra=page%3D1

7、编辑器增加MP3标签按钮
有时感觉自己真是懒到家了,,既然添加了一些自定义的UBB标签,那么干脆在fckeditor里面也加入自定义的按钮来自动生成代码吧,不过,不知之后还要不要添加自定义的UBB标签,暂时不改,以后一起改!

8、Mp3附件自动播放插件
发现已Hack出这个好东东,暂时没装,备忘一下!

暂时这样了,嘿嘿!

WordPress与SaBlog使用之我见

June 27th, 2007 / 爱好·网站建设 / 18 条评论

昨天开始放弃 WordPress,开始转换数据,今天开始使用SaBlog,目前来说,Sablog除了不能像WordPress那样利用文章名来优化url之外,其它的地方的确让我体会到使用的乐趣,到目前为止,我只使用过两种Blog程序(见笑了),当然就是WordPress和SaBlog了,从一开始用其所长WordPress,然后是两个星期后改用刚刚出来的第一个版本的SaBlog,再到后来在Utom的帮助下转换成WordPress,再到现在的SaBlog,我想我不会再换了,假如不是没有办法的话...于是,主观的对比一下WordPress和Sablog,当然一种纪念吧!

讨论哪个程序更好已经没有什么意义,更多的时候,你只会在乎自己更喜欢哪一个,我喜欢WordPress,但作为一个已经不能把DIY作为乐趣的人来说,WordPress的种种缺点让我更喜欢Sablog的人性化,或者说,Sablog给了我更好的用户体验。

假如真要用两样最通俗的东西来形容WordPress的话,我刚才就想到:看书与看电影!

或许不够恰当,或许有些勉强,但是实际上,这两者的确让我有这种感觉,用WordPress就像看书,可以囫囵吞枣,当然也可以慢嚼细味,看书的乐趣在于,不管作者用怎样的文字来同你描述某些故事,你总可以有所保留的按你的意愿去对一些事情做出判断,这就是我们津津乐道的“二次创作”了!而用Sablog,感觉就像周末借电影消遣,不用花太多时间,也不用费脑力进行二次创作,该有的都有了,你只需要摆好舒服的坐姿(或者躺着也可以),然后让思想天马行空就行了!

WordPress就是这样的一个程序,你可以花几分钟的时间,用它架设出一个简洁而功能很全面的Blog,但是,我想更我的人更喜欢于安装更多的插件来使他(或她)的Blog看起来(或者用起来也一样)功能强大而富有个性,WordPress之所以那么出名,我想最重要的原因是它够简单,简单到让你忍不住去捣鼓它,把原本朴实无华的确Blog DIY成个性十足个人展区,同时,也正因为这种简洁,才使它有了更好的扩展能力,于是,在网上,到处你都可以见到五光十色的以大量的插件堆积而成的WordPress。

说到这里,我不得不承认我也喜欢这样的WordPress,因为写日志本来就骨子里渗透着彰显个性的目的!

但是,从去年大概这个时候写下第一篇网络日志开始到现在,我发现自己已经厌倦了以前那种偏执、事无巨细地追求完美的工作态度,我需要一个Blog,是要用来记录自己的一些点滴,因为我健忘,所以我也需要用Blog来做一些资料备忘,然后,心情不好的时候可以发牢骚,心情好的可以天花乱坠地吹...所以,从某方面来说,WordPress被我“浪费”了,在实际应用中,总觉得WordPress用得并不是太舒服,而且一天不到1000的IP就占了服务器很多的资源,汗死了,回过头了再次使用Sablog,觉得两者主要有以下几个方面的区别:

1、效率
其实这个是我放弃WordPress的主要原因,实际使用中,发现WordPress占用的资源超过了一个单用户Blog所应该占用的资源很多,之前以为是我服务器的问题,但是之后换了服务器,问题依旧,当然了,主要原因应该是插件,但是我实在想像不出,使用一个没有安装插件的WordPress会是怎样的一种情况,国外的开源程序效率相对比较差已经是勿庸置疑的事了,但是我还是不能忍受这个的WordPress。

另外,很奇怪的是,WordPress自带的缓存插件,简直烂得要命,测试发现,一打开这个功能,WordPress所占用的服务器资源真的大得惊人,而且,打开页面的时候也奇慢无比,缓存机制就是为了效率,没想到使用以后效率反而更低了,这真让人费解...没办法,使用WordPress的时候,我后来干脆关掉了缓存插件,似乎情况有所好转,真是汗!

2、后台
作为一个国外程序,这方面肯定是差强人意的,不奇怪,虽然英文的界面用得也挺舒服,但是偏执的我总觉得前台中文后台英文始终怪怪的,可是用汉化的话,提交后的跳转提示总是一堆乱七八糟的乱码,看得真不舒服。
Sablog的后台界面一直很喜欢,呵呵,我甚至怀疑,sablog的后台是不是angel做的界面,要不然怎么跟前台的界面差那么多?

3、支持
很多人说,之所以用WordPress的人那么多,那是因为WordPress太优秀了,优秀是肯定的,但是我总觉得之所以现在仍然有大量的人使用WordPress,其中一个重要的原因是WordPress的共享资源太多了,模板多,插件多,有时候,看国外一些牛修改的WordPress,真的才叫做艺术,或者,这个也是很多设计师偏爱WordPress的原因之一吧。
反观Sablog,用户群还不是太多,名气也不算大吧,官方论坛人气不足,不过作者Angel为人不错,对自己做的东西很负责,程序不错,作者也不错,我们为什么不支持一下呢?

但是话说回来,对于像我这样只想用Blog备忘写下日志的使用者,Sablog其实已经不需要像WordPress那样去找“插件”了,功能已经很全了,不花俏的东西用起来反而更舒服,至少我在使用Sablog的时候,是很轻松的,不像WordPress,后台要自己大动干戈才能让它用起来比较顺手...

晕倒,昨晚没写完,今天接不上了,不知怎么说了...

到目为止,最希望Sablog能在以下几个方面改进:

1、像WordPress那样可以利用文章title而对URL进行优化,我想每个做过站的人都有这种SEO习惯吧,呵呵,不过听Angel说,他已经把这个功能写入下个版本的计划中了,期待;
2、增加自动保存的功能,可以学习一下WordPress,也可以参考Gmail的自动保存功能,我不知道其它人对这个感不感冒,但是对于我来说,很重要,不管在上班时间还是在家里,我经常会突然放下刚在写的日志而去处理一些其它的事情,或者说,我码字的速度不够快,思路也不能够行云流水,所以往往我写完一小段的日志,按“提交”的时候我会大呼大事不妙,因为我知道,我肯定“超时”了,后果就是我辛苦码出来的文字不见了,当然,热情也没有了;
3、后台登陆是不是做得像WordPress那样可以长期保持已登陆的状态的?虽然说,这个相对来说不够安全,但是实际上,有哪几个人会跑去网吧写自己的日志?每次都要登陆麻烦,提交文章后发现超时更是让人很痛苦;

剩下的,暂时还没想到,呵呵!

模板共享:Bluefeel for Sablog-X (2007.08.12更新)

June 26th, 2007 / 爱好·网站建设 / 27 条评论

今天抽空把Hoofei的Sablog模板改了一下,效果还不错,刚好有人要,那么就共享出来吧!

此模板由Hoofei原创,我只是作了配色和一些细节上的修改,版权属于Hoofei。

此模板只在Sablog 1.6下测试通过,请不要应用于其它版本。

screenshot.png

一些常用的正则表达式

June 21st, 2007 / 爱好·网站建设 / 暂无评论

虽然看不大懂,不过还是备忘一下,以备不时之需! ^\d+$  //匹配非负整数(正整数 + 0) ^[0-9]*[1-9][0-9]*$  //匹配正整数 ^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0) ^-[0-9]*[1-9][0-9]*$  //匹配负整数 ^-?\d+$    //匹配整数 ^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0) ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数 ^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0) ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数 ^(-?\d+)(\.\d+)?$  //匹配浮点数 ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串 ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址 ^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 下表是元字符及其在正则表达式上下文中的行为的一个完整列表: \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。 * 匹配前面的子表达式零次或多次。 + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 {n} n 是一个非负整数,匹配确定的n 次。 {n,} n 是一个非负整数,至少匹配n 次。 {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 . 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。 (pattern) 匹配pattern 并获取这一匹配。 (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 (?!pattern) 负向预查,与(?=pattern)作用相反 x|y 匹配 x 或 y。 [xyz] 字符集合。 [^xyz] 负值字符集合。 [a-z] 字符范围,匹配指定范围内的任意字符。 [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。 \b 匹配一个单词边界,也就是指单词和空格间的位置。 \B 匹配非单词边界。 \cx 匹配由x指明的控制字符。 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。等价于 [^0-9]。 \f 匹配一个换页符。等价于 \x0c 和 \cL。 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \t 匹配一个制表符。等价于 \x09 和 \cI。 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 \w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 \W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。 \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。 \num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。 \n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 \nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八

绕过验证码,几分钟搞定网站备案(悲哀)

June 14th, 2007 / 爱好·网站建设 / 一条评论

其实,这个是刚实行网站备案政策时,由于备案系统的所谓的“验证码”长期收不到的问题而摸索出来“没有办法的办法”,没有记错的话,已经是04年的事了,现在回过头来还要再次使用,除了悲哀,我实在想不出有什么字眼可以表达我的心情! 我想做过网站的人肯定会对那段时间印象深刻,想那时,服务器大批大批地封,有时候,一台服务器上,只要其一个网站没有备案,整台服务器上的网站都会受到牵连,当时我很多客户的网站几乎都被封过,不管是否已备案,然后当然是我的手机被客户打爆..... 那次过后,所有的网站主都“积极”备案,但是问题又来了:一方面,备案之前必须先注册,注册成功后就要等验证码,验证码有两个,一个是发到邮箱,一个发到你手机,必须两个同时验证通过才能做下一步的备案程序,但是当时大部分情况下手机验证码是收不到的,邮件倒是可以收到验证吗,但是两者缺一不可,于是,隔一段时间就必须“重发一次验证码”,再收不到,再重发,如此不停的重复,等到终于有一次收到手机验证码的时候,你会觉得自己是如何的“幸运”!但是,官方规定,一个用户只能备案一个网站,一个网站对应一个用户,也就是,假如你是“多产”的站长,那你就痛苦了,为了备几个站,你得花费想像不到的时间... 比如我,当时同时在做几个站,然后是客户的网站,刚开始当然是让客户自行备案,但是发现完全不可能,于是只能帮客户备案,于是痛苦了! 后来,摸索中发现了备案系统的一个BUG,利用这个BUG,发现可以绕过验证码这一关,也就是说,可以在没有收到任何验证码的情况下进入备案后来提交备案,当时曾经在一些论坛上发过,只是没想到,事隔这么久,还要故伎重演,实在是中国互联网的悲哀!


1:登陆:http://www.miibeian.gov.cn/ 2:注册(注册完了手机上收不到短信,没有验证码) 3:退回主页(http://www.miibeian.gov.cn/) 4:用任何一个已成功通过验证的账号A(呵呵,不要说你一个也没成功过)登陆 5:新开一个窗口,用没有通过验证的账号B登陆,提示输入验证码,不理它 6:回到之前已登陆的账号A窗号,按"添加"就可以用账号B备案了,这时左边菜单那里虽然显示是账号A,但通过试验,所做的操作均是对应账号B的

设置查看源代码的默认编辑器

June 12th, 2007 / 爱好·网站建设 / 4 条评论

在IE“查看源代码”默认都是用的记事本打开的,因为工作的关系,需要经常查看源代码(其实是养成了习惯),记事本功能太弱,而且也用不惯,所以前段时间索性改成默认用Dreamweaver查看源代码,找到注册表中对应的位置如下,备忘一下:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internate explorer/View Source Editor/Editor Name

然后把数值改为:
D:\Macromedia\Dreamweaver 8\Dreamweaver.exe
(具体对应所调用程序的实际位置)
搞定!

为WordPress增加留言本本

June 3rd, 2007 / 爱好·网站建设 / 6 条评论

今天心血来潮,想为WordPress增加一个留言本本,虽然WordPress的评论功能已经很不错了,但是要做成留言簿的形式的话比较好的方法是利用WordPress的Page功能,另外,要利用Page功能做成留言本,还需要在细节上作一些修改,具体修改如下(以我自己的留言本本为例,其实细节礼视个人习惯而异):

首页当然是新建一个Page,命名为“留言本本”,地址为:http://www.bluefeel.com/guest-book/,在相应的位置做好链接。

打开模板文件page.php,在适当的位置加下如下代码:

把模板文件comments.php复制后命名为comments_book.php,然后打开作一些相应的细节修改,比如把“评论”等字眼改为“留言”,等等,自己喜欢就行!

打开wp-includes\comment-template.php,查找:
function comments_popup_script($width=400, $height=400, $file='')

在上面增加以下代码:
function comments_book_template( $file = '/comments_book.php' ) { global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity; if ( ! (is_single() || is_page() || $withcomments) ) return; $req = get_option('require_name_email'); $commenter = wp_get_current_commenter(); extract($commenter); // TODO: Use API instead of SELECTs. if ( empty($comment_author) ) { $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND comment_approved = '1' ORDER BY comment_date DESC"); } else { $author_db = $wpdb->escape($comment_author); $email_db = $wpdb->escape($comment_author_email); $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = '$post->ID' AND ( comment_approved = '1' OR ( comment_author = '$author_db' AND comment_author_email = '$email_db' AND comment_approved = '0' ) ) ORDER BY comment_date DESC"); } $comments = apply_filters( 'comments_array', $comments, $post->ID ); define('COMMENTS_BOOK_TEMPLATE', true); $include = apply_filters('comments_book_template', TEMPLATEPATH . $file ); if ( file_exists( $include ) ) require( $include ); else require( ABSPATH . 'wp-content/themes/default/comments_book.php'); }

上传更新文件,OK,搞定了!

Update:有人需要comments_book.php和comment-template.php这两个文件,那就提供一下:
点击下载comments_book.php和comment-template.php