Dec 30
Written by geniusy in Web 617 views
还得再次声明,换程序并不是因为Drupal不好,而是因为下面的原因,而且我还是要说:Drupal是无所不能的。短短一个月,换了两次程序,每个程序也都不是表面上的接触,模板制作和程序hack都经历过,所以我相信我是有资格来对Sablog,Drupal和WordPress做个对比的。
首先说说Sablog吧,它真是国内一款非常出色的独立博客程序。借鉴了WordPress的众多优点,集成了所有常用的功能(很多在WordPress中是需要安装插件实现的),安装后就可以满足90%用户的需要。但是克服了WordPress一个巨大的缺点:速度,Sablog可说是国内最快的博客程序之一。没有什么明显的缺点,因为不支持插件,所以不能满足挑剔的人的所有需要,比如自定义URL规则、灵活调用帖子(最新贴和热门帖都需要通过JS)、留言本等,但是这些基本上都可以通过hack实现,但如果那样也就失去了使用Sablog的意义:简单就好,需要hack的Sablog已经不简单了。
想到就能做到,WC用这句话来形容ECMS,但我觉得只有Drupal才配这句话。我相信每个接触Drupal的人都会这种感触的,上千个module,可以实现你能想到的任何应用。或许也正是因为它的强大,它的高可塑性,所以它不简单。用它可以实现很复杂的应用,但是要实现一个简单的应用,比如博客,也需要很复杂的步骤。专注不是它的目的,复杂才是它的特点,被它强大功能吸引的站长们也变得复杂了。用它的博客基本上都还带了论坛,还是多用户,那些都不符合个人博客的特点,所以我决定放弃它。但如果考虑建站,我还是会首先考虑Drupal的,我今后也会有很多网站会用Drupal来搭建的,那才是它的用武之地。
独立博客站长应该都比较了解WordPress,专注、强大都可以用来形容它。专注是说用它搭建的网站就是一个最标准的博客;强大是因为只要你能想到的博客应用它也都能实现。说它简单是不大合适的,安装后你只能实现一些基本的应用,要扩展成一个全能的博客是需要安装一些插件的。但对于我这种比较挑剔的人来说,或许它是最好的选择。与Sablog比起来,WP扩展功能不需要修改程序;与Drupal比起来,像文本编辑器、Calendar、Archive这些最基本的应用不需要额外安装插件。
追求简单,我最终选择了WP,并且采用了这套简单的风格。其实网站重在内容,这个道理谁都懂,但是因为有了太多的选择,所以才会无所适从,三心二意,我希望从此我的心能够定下来。
Dec 19
Written by geniusy in Web 299 views
模板前两天就开始做了,这个站从Sablog转到Drupal花了几个小时,这包括安装Drupal和安装各模块(module)和转化数据的时间。现在网站还有很多问题,请大家尽量先访问http://www.geniusy.com/sablog,今后那个网站也将一直存在的,毕竟我对Sablog是充满了感情的,今后还将为Sablog写一些模板,如果有时间,也会做一些Hack的。
等网站调试好后我会写一篇比较详尽的安装笔记的,要为Drupal的新朋友送点礼了,不然人家不接纳我啊。
前几天DDA由Sablog转到WP了,今天我又转到Drupal了。但我们都不是因为不喜欢Sablog,只是因为喜欢尝鲜罢了。而且我准备对geniusy.com进行改版,作成一个网站,所以Sablog也的确不能满足需要了,而Drupal就正好,用它一个程序就行了,博客,论坛等全都有了。Sablog简单是它的优点,同一个模板我做成Sablog只用几个小时,但做Drupal模板就差不多得花几天。如果只是用做博客,Sablog绝对是个很好的选择,我今后如果还要独立开博客,我肯定也会选它的,不过希望那时候2.0已经出来了啊,呵呵。
P.S.之前就有人找我要这套模板,现在既然都已经转到Drupal上来了,等我把这网站调试的差不多的时候我就打包放出来吧,我个人也觉得这个模板是不错的。到时候我可能会提供几个版本,因为大家之前看的都是sidebar在右边的,现在的是左右各一个,还可以做出全在左边的效果,我倒是候可能会再花点时间全部做出来的,希望大家会喜欢。
Dec 14
Written by geniusy in Web 262 views
在这个模板上花的精力也不少了,我自己是相当满意的,而最自豪的一点就是右侧的Widget全部可以根据是否有内容自动开关,也可以通过在后台打开或者关闭,用户前台也可以通过点击右上角的绿色圆点收起部分widget或者调整其间的排列顺序。
功能是强大了,但问题也随之而来,太多的判断和循环大大拖慢了网页打开速度,而Sablog又没有经过Gzip压缩,右边的widget要花很长时间才能打开。不过出于搜索优化的缘故,所以Widget的代码是放在后面的,也是在左边内容栏全部打开后再载入的,这也恰巧不影响正常的文章阅读。
功能上基本上已经完善了,放出去的供别人使用的时候应该是现在的全功能的,以兼顾新手使用。不过既然我不算新手了,呵呵,就可以精简掉一些判断,来换取速度,功能和速度是不能兼得的,没办法,只有各牺牲一部分了。
Dec 14
Written by geniusy in Web 244 views
哎,用博客的人竟然不喜欢研究,可悲啊,其实要实现这个功能只需要增加7个半角英文代码就行了。你可以按照我下面的提示修改,也可以直接下载我修改好的js.php文件覆盖根目录相应文件就行了。
1、打开博客根目录js.php,找到
- if (is_array($datalist)) {
- foreach ($datalist AS $articleid=>$value) {
- echo “document.writeln(\”".($cname ? “[<a href=\\\"".getcateurl($value['cid']).“\\\” “.$LinkTarget.“>”.$value['cname'].“</a>] “ : ”).“<a href=\\\”".getarticleurl($articleid).“\\\” title=\\\”".$value['title'].“\\\” “.$LinkTarget.“>”.trimmed_title($value['title'],($cname ? ($titlelimit - $value['cnamelen']) : $titlelimit)).“</a>”.($author ? ” by “.$value['username'] : ”).($dateline ? ” on “.$value['dateline'] : ”).($articleinfo ? ” (浏览:<font color=#CC0000>”.$value['views'].“</font> 评论:<font color=#CC0000>”.$value['comments'].“</font>)” : ”).“<br />\”);\r\n”;
- }
2、在第二个”<a href=”之前加入<li>,在第二个</a>后加入</li>,修改后如下
- if (is_array($datalist)) {
- foreach ($datalist AS $articleid=>$value) {
- echo “document.writeln(\”".($cname ? “[<a href=\\\"".getcateurl($value['cid']).“\\\” ”.$LinkTarget.“>”.$value['cname'].“</a>] ” : ”).“<li><a href=\\\”".getarticleurl($articleid).“\\\” title=\\\”".$value['title'].“\\\” ”.$LinkTarget.“>”.trimmed_title($value['title'],($cname ? ($titlelimit - $value['cnamelen']) : $titlelimit)).“</a></li>”.($author ? “ by ”.$value['username'] : ”).($dateline ? “ on ”.$value['dateline'] : ”).($articleinfo ? “ (浏览:<font color=#CC0000>”.$value['views'].“</font> 评论:<font color=#CC0000>”.$value['comments'].“</font>)” : ”).“<br />\”);\r\n”;
- }
3、现在你就可以把调用的JS放入<ul></ul>之间,并通过CSS来控制<li>和</li>之间标题的样式了。
只加入了9个全角字符,就这么简单,希望大家今后能够多研究研究。
Dec 14
Written by geniusy in Web 293 views
今天又在这上面花了好几个小时,不过结果还是基本令我满意的:模板现在基本上可以正常使用,评论正常,widget可以正常打开关闭和移动,我还打入了点自己创意,widget都是可以在后台打开关闭显示的。比如说友情链接吧,你只要在后台关闭博友情链接显示,那个widget整个都不会显示,今后我还会加入一些创意进来的,只要在我没换模板之前都会一直改善的,再测试几天,确认无错后准备放出来,毕竟Sablog的模板真是太少了。
之前的伪静态规则还不很完善,比如说用字啊独立主机上(写入httpd.conf文件内)有些未静态的页面打不开,还有文章链接也是用的官方的静态化规则。今天终于找到办法解决了,本来可以通过改index.php文件来改变网站网址生成规则,包括动态的地址,比如可以用”http://www.geniusy.com/index.php?action=show&item=文章标题”形式来打开相应文章,这样在伪静态的时候就可以获取到articlename这个参数,其它事情就好办了。但为了不影响源程序的完整性,放弃了这种方案,而采取了下面的方式:伪静态规则为“http://www.geniusy.com/文章标题-id.html”,然后通过rewrite指向”http//www.geniusy.com/index.php?action=show&id=id”,问题基本上解决,但是因为没有对title进行处理,所以如果中间有空格那么就不能静态化了。
之前还发现一个奇特情况,有时候有些网址不能伪静态,就是说common.php在用伪静态规则替换的时候很多网址不替换。之前一直没找到解决方法,今天窒息研究common.php,终于发现问题了,原来其中的替换匹配规则是这样写的 <code>”/\<a href\=\”(\.*\/*)\?action\=index&setdate\=(\d+)(&page\=(\d+))?\”( class\=\”(.+?)\”)?/e”,\> </code>
这是就出现问题,它只考虑到了class,要是人家<a href=”"后面还有title或者id呢?或者有些人不把href写在紧跟a的位置,那样就匹配不上了。解决办法:我把后面的”/>”去掉了,这样就解决了后面有title或者其它条件的情况,包括那个class也可以去掉,但是算了,反正都是加了括号的,不影响结果。解决href之前有title或者其它条件的情况最好是自己写模板的时候注意一下,你也可以在前面加入(title\=\”(.+?)\”),我没加,只有一个比较特殊,就是日历,因为sablog默认的就是在a和href之间有title,所以我把那个加上了。
现在Sablog终于被我调教得基本上和我意了,但是还没找到怎么调用评论最多的文章或者查看最多的文章,这个应该要直接调用数据库的,过两天再研究吧,现在已经差不多够用了。
Dec 13
Written by geniusy in Web 288 views
昨天看到dda1988老兄都转WP了,真是伤感啊。我昨天也在Sablog论坛发了一下牢骚,的确是令人痛心啊,论坛那人气,即使辛苦做的东西再好也没几个人看。其实昨天也有转WP的想法,特别是决定开始做Sablog模板后被
<code>
<!–
- <!–
- EOT;
- if ($options['enable_trackback'])
- {print <<<EOT
- –>
</code>
<code>
- <!–
- EOT;
- }print <<<EOT
- –>
</code>
弄得晕头转向后,看来做Sablog模板的确不容易啊。虽然主要只用做3个文件,但是每个文件都烦死了,不是多了“}”就是提示不该结束(也就是少了}的意思)。而且我还发现一个很有意思的事情,normal.php和show.php文件头部的
<code>
- <!–<?php
- if(!defined(‘SABLOG_ROOT’)) {
- exit(‘Access Denied’);
- }
- print <<<EOT
- –>
</code>
在生成页面的时候会出多个”<!–”,导致后面的文件全部变成注释了,当时真是弄得我一头雾水,因为页面上不显示,还以为是调用不了呢。后来打开生成html源代码才发现问题根源,就修改了代码
<code>
- <!–<?php
- if(!defined(‘SABLOG_ROOT’)) {
- exit(‘Access Denied’);
- }
- print <<<EOT
- –>–>
</code>
,不过说实话,这样的代码才是有问题的,看来Sablog的确还有很多地方需要改进啊。
好了,说说这套模板吧,我相信应该大家都见过,不过我还真是第一次见到。在一个采用bo-blog程序的博客看到的,一下子就被吸引了,进而找到了它的起源-WP,当时就有了转WP的意思,安装文件都已经下载下来了(呵呵,当时还不知道dda1998兄转WP的,所以不是因为他才萌生的转意)。不过后来一想,算了,不就是博客嘛,功能够用就行了,我不相信我不能把Sablog改成适合我的。所以今后我会继续改一些其它博客程序上的经典主题,并且对Sablog程序进行一些Hack,认定它了。
有喜欢这套模板的等几天吧,我完善后在放出来,现在我的博客每天都半数以上时间处于当机状态,呵呵,都是在改程序或者模板啊,大家体谅一下我啦。
Dec 12
Written by geniusy in Web 282 views
哎,老大说得真没错,正则真他妈烦人(common.php文件里面的注释,呵呵),查阅了无数资料,花了好几个小时,终于弄得差不多了,下面说说增加的规则:
1、所有标签(包括中文标签)都已伪静态。伪静态后地址变为http://网站地址/标签名-页码.html,恐怕这也是伪静态后最有优势的地方了,今后你的网址中也有了关键字,大大有利于搜索引擎收录。文章标题还没找到解决办法,因为动态网址中没有自带“标题”这个参数,都是ID,所以要麻烦一些,我会尽快找到办法的,暂时还是用官方的伪静态。
2、留言实现了伪静态,想在网址变成了http://网站地址/comments-文章ID-留言ID.html。这个主要是解决非伪静态状态下sablog 1.6的一个bug,很多人都遇到的,就是单击首页的留言,标签等都没反应。我是只在rewrite规则加在httpd.conf里面才出现的,用.htaccess就没问题。观察了一下,只知道sablog在独立主机规则的时候不将/?action=xxx转化为/index.php?action=xxx,但不知道原因。索性我就将其伪静态了,直接就转发到了/index.php?action=xxx,问题解决。
3、Google map。本来我前几天就改了samool提供的sitemap文件让其自动生成sitemap.xml文件,这已经大大简化了工作。但昨天tension一句话点醒了我,可以用伪静态将sitemap.xml转发到sitemap.php文件,思路豁然开朗,现在要“生成”sitemap.xml都不用自己运行sitemap.php了,搜索引擎一打开sitemap.xml网址就自动转发到sitemap.php,然后这个文件又自动生成了sitemap内容,但没有真正生成sitemap.xml这个文件,真正实现了全自动。
为了简化安装步骤,将所有文件打了个包,直接上传到sablog根目录覆盖原有文件,一切OK。对于想把rewrite规则加到httpd.conf的,请用下面的规则,不能使用.htaccess里面的,那是专门针对虚拟主机的:
# BEGIN Sablog-X Rewrite
RewriteEngine On
# 文章
RewriteRule ^(.*)/show-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=show&id=$2&page=$3 [L]
# 分类
RewriteRule ^(.*)/category-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=index&cid=$2&page=$3 [L]
# 只带月份的归档
RewriteRule ^(.*)/archives-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=index&setdate=$2&page=$3 [L]
# 用户列表、高级搜索、注册、登陆
RewriteRule ^(.*)/(archives|search|reg|login|index|links)\.html$ $1/index.php?action=$2 [L]
# 评论列表、标签列表、引用列表 带分页
RewriteRule ^(.*)/(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ $1/index.php?action=$2&page=$3 [L]
# 具体评论规则
RewriteRule ^(.*)/comments-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=show&id=$2&cmid=$3&goto=newcm [L]
# 具体标签规则
RewriteRule ^(.*)/(.*)-([0-9]+)\.html$ $1/index.php?action=tags&item=$2&page=$3 [L]
# google map规则
RewriteRule ^(.*)/sitemap\.xml$ $1/sitemap.php [L]
# END Sablog-X
安装使用中有问题的请留言,我会尽量在一天之内解决的。
Dec 08
Written by geniusy in Web 609 views
用samool提供的sitemap.php文件生成了一次sitemap.xml文件,但觉得每次都那样做的话真太麻烦了。先生成sitemap.xml文件的内容,然后再保存,上传,真是太麻烦了,每次写了博客都要做一次。
其实php是可以自己生成文件的,所以就想到改一下代码,直接生成sitemap.xml文件得了。而且samool提到的uft8文件问题也完美的解决,因为sitemap.php是utf8格式的,所以生成的sitemap.xml也是uft8格式的,可以通过firefox查看网页属性。
可将sitemap.php文件可放入网站下面任意目录,生成的sitemap.xml都在根目录,但要保证根目录可写,或者自己通过ftp创建好sitemap.xml文件,并设置你属性可写。大家可以在网站后台做一个到sitemap.php的链接,这样每次写了博客后直接单击就可以生成sitemap了,大大减少了工作量。
再次声明:本文件由samool提供的sitemap.php文件修改而成,除了生成xml文件部分之外,其它地方未作任何改动。
Nov 30
Written by geniusy in Web 455 views
如果开启.htaccess查找功能会影响系统速度,所以自从搭建服务器后都没有打开这个功能。加上discuz和phpwind都是推荐直接在httpd.conf中加的,所以一直都没去动过这个。
但前几天装phpbb的那个url优化mod,竟然没提供独立主机的规则,之后装Sablog-X也没有提供。呵呵,就想到自己改了,其实discuz提供了很好的教程,自己把两种规则一对照,规律一下子就出来了,下面简单来说说吧,先把discuz 6.0的两种规则列出来:
Apache虚拟主机rewrite规则:
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /discuz
# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[0-9]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1
Apache独立主机rewrite规则:
RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[0-9]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3
RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2
两者对比,不难发现,之间有三处区别:
1、独立主机每条规则以^(.*)开头,而虚拟主机就是^,所以加入(.*)就行了;
2、独立主机规则的后半段以$1/开头,虚拟主机没有,也是加上就行了;
3、独立主机因为前面已经有了$1,所以后面就应该依次是$2,$3,改一下数字就行了。
今后大家再遇到这种情况就可以自己改了,呵呵。国外的cms一般都比较小家子气,首先界面和定位是博客,它以为它的用户也都全是只能买虚拟主机的,所以一般都不提供独立主机Rewrite规则。
呵呵,Sablog本来就是一个博客,所以不提供也正常啦,我还是把改好的规则拿出来和大家分享吧。
RewriteEngine On
RewriteRule ^(.*)/show-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=show&id=$2&page=$3
RewriteRule ^(.*)/category-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=index&cid=$2&page=$3
RewriteRule ^(.*)/archives-([0-9]+)-([0-9]+)\.html$ $1/index.php?action=index&setdate=$2&page=$3
RewriteRule ^(.*)/(archives|search|reg|login|index|links)\.html$ $1/index.php?action=$2
RewriteRule ^(.*)/(comments|tagslist|trackbacks|index)-([0-9]+)\.html$ $1/index.php?action=$2&page=$3
大家把这段加入和之间就行了。
下面是改好的PHPBB 3.0 beta7 的独立主机规则,不分享浪费啊,呵呵。
RewriteEngine On
Rewriterule ^(.*)/(.+)-f([0-9]*).html-(.+)$ $1/viewforum.php?f=$3&$4
Rewriterule ^(.*)/(.+)-(t|p)([0-9]*).html-(.+)$ $1/viewtopic.php?$3=$4&$5
Rewriterule ^(.*)/(.+)-f([0-9]*)s([0-9]*).html-(.+)$ $1/viewforum.php?f=$3&start=$4&$5
Rewriterule ^(.*)/(.+)-(t|p)([0-9]*)s([0-9]*).html-(.+)$ $1/viewtopic.php?$3=$4&start=$5&$6
Rewriterule ^(.*)/(.+)-f([0-9]*).html$ $1/viewforum.php?f=$3&$4
Rewriterule ^(.*)/(.+)-(t|p)([0-9]*).html$ $1/viewtopic.php?$3=$4&$5
Rewriterule ^(.*)/(.+)-f([0-9]*)s([0-9]*).html$ $1/viewforum.php?f=$3&start=$4&$5
Rewriterule ^(.*)/(.+)-(t|p)([0-9]*)s([0-9]*).html$ $1/viewtopic.php?$3=$4&start=$5&$6