Z-Blog插件:文内关键字替换

添加评论 2007年5月14日

先咒骂一下神舟再说正事儿:可恶的神舟,买了它的本子后大件几乎全换过一遍了,这次主板第二次出问题,又返厂了。

没本儿用了,熟悉的开发环境也没有了,周末在家也就没事儿干了,正好看到Z-Blog论坛上有兄弟要关键字替换的插件和文章投票的插件,周末就写这个吧。

这两个都不算难,原计划一晚上加一天就搞定的,结果一晚上倒是把关键字替换的功能写出来了,但发现只在IE中可以运行,到FireFox中测试发现根本不行,原来是DHTML中的一些属性在FireFox中不支持,没事儿,条条大路通罗马,换个方法就搞定了…… 当搞定FireFox后,发现到IE中又不行了,原来是为了在FireFox中能正常运行加的几个属性在IE中又不支持了#$%^#&#*(

发此反复了N次,最终才搞定,结果发现写代码用了一晚上,为了让IE跟FireFox中都跑通竟然又用了一天一晚上(Test跟Coding的时间比好象有点大-_-!!!)。这让我信心大减,投票的代码也就没心情写了,看哪天再有时间时再说吧。

废话说得有点多了,还是说一下插件吧:

基本实现:

因为论坛上的朋友是要插件,所以要尽量少改源码,另外,我打算写得尽可能与Z-Blog无关,这样一来以后Z-Blog升级时就不需要跟着改,二来把这个插件拿到别的Blog甚至别的CMS系统中直接就可以用,所以我用了独立的数据库+JS脚本来实现,完全不与Z-Blog的数据库发生交互。

另外用JS实现还有个好处,就是设的关键字再多也不会影响到服务器端生成时的速度,而且,新添加了关键词后也不必重建全部文件。这使插件的灵活性大大提高。

还有一个好处:就是写的时候我顺便多实现了一点功能,就是根据节点的类名(ClassName)来替换关键字,这样一来,不止文章内容可以替换,只要是在后台设置了相应的类名页面中的任意部分都可以替换——譬如用户留言等。

当然,有得必有失,降低服务器压力的同时也有缺点需要说明一下:关键字替换因为是通过脚本实现的,所以替换结果只有用户看得到,搜索引擎是看不到的,所以不能靠这个插件来做SEO。(要想让搜索引擎也看到,就只能修改代码,这样一来以上的优势就得全抛弃了)

用法:

  1. 把插件下载后解压缩到Z-Blog的Plugin文件夹中。(插件需要对自己所在的目录有写权限,那些象我一样变态到一个文件夹一个文件夹(甚至是一个文件一个文件)地设权限的朋友得把KeyWords这个文件夹的写权限开了。)
  2. 把TEMPLATE文件夹中default.html single.html catalog.html search.html页中</body>标签前加上如下一行脚本。
    <script language="javascript" type="text/javascript" src="<#ZC_BLOG_HOST#>/PLUGIN/KeyWords/KeyWords.js"></script>
  3. 到后台重建一次文件就可以了。(不用每次加完关键字都重建)

简单说明:

  1. 对象类名是指要应用关键字替换的区块的类名称,如果想为多个不同的区块替换,可以用半角逗号隔开多个类名。
  2. 填写时关键字与对应URL不可为空,任一部分为空则此条记录不添加。
  3. 删除某条记录时只需要清空该条记录中的关键字后提交即可。
  4. 新窗口为空时窗口打开按所在页的默认值,为"_blank"强制新窗口打开,"_self"强制当前窗口打开,除此之外Target支持的其它值都可手动输入。
  5. 各条目中不可输入“>’|"<”等特殊符号,如果必需输入,请用相应的全角符号代替。
  6. 说明中可用“\n”进行换行。
  7. 替换后的链接类名是"keylink",大家可以在CSS中给这个类定义特殊效果,以区分替换的链接跟普通链接 。

下载地址: KeyWords.rar

  1. 2007年5月14日 at 09:53 | #1
    google

    支持下

    第3楼
    http://bbs.rainbowsoft.org/viewthread.php?tid=13187

  2. 2007年5月16日 at 00:51 | #2

    可以实现,但是IE有错误提示
    没有gravatar头像的页面提示是 参数无效。 具体链接:http://www.likk.com/blog/post/979.html
    有gravatar的页面提示是….为空或不是对象 具体链接:http://www.likk.com/blog/post/976.html

  3. 2007年5月16日 at 10:40 | #3
    软件兔
    引自 likk

    可以实现,但是IE有错误提示
    没有gravatar头像的页面提示是 参数无效。 具体链接:http://www.likk.com/blog/post/979.html
    有gravatar的页面提示是….为空或不是对象 具体链接:http://www.likk.com/blog/post/976.html

    看过你的代码了,似乎不是关键字替换脚本有问题,报错的行数是第182行,而关键字替换的这个脚本一共才57行Hehe

    另外 http://www.likk.com/blog/post/980.html 这个页面中所有"教育"也都替换了, 如果是替换脚本有问题的话, 出错后就停了, 不可能全部替换的.

    估计是跟其它某个脚本(例如为链接显示图标的脚本)有冲突, 如果可能的话上下调整一下各个脚本的先后顺序也许能行

  4. 2007年5月16日 at 22:09 | #4

    后来发现是和 Referer 的代码冲突了。调换顺序也不行,删除Referer就没事了。
    谢谢兔子的提醒。。

  5. 2007年5月16日 at 23:58 | #5

    还是不行,提示说和 var intMaxLen="1000";冲突

  6. 2007年5月21日 at 11:23 | #6
    xiaoyi

    我全部都是按步骤来的,为什么我的页面没有显示关键字呢?

  7. 2007年5月22日 at 08:40 | #7
    软件兔

    至少留个Blog的地址,我才能过去看看是什么地方出了问题呀.

  8. 2007年5月29日 at 01:19 | #8

    很好 非常好

  9. 2007年5月31日 at 01:05 | #9
    冷库

    我也是啊,跟着来也不行

  10. 2007年6月11日 at 09:00 | #10

    超级支持,希望能够再加以改进,使搜索引擎也能看得到.

    软件兔 于 2007-6-11 9:00:21 回复

    让搜索引擎看到意味着对源码动手术,这样一方面让不太懂代码的朋友不会安装;另一方面,每次当系统升级时都要跟着重新改; 最重要的是, 当文章越写越多, 生成时额外浪费的时间也会越来越多, 久而久之, 反而会让人不想用它了.

  11. 2007年6月22日 at 16:15 | #11

    支持一下!

  12. 2007年6月22日 at 16:17 | #12

    有所收获,谢谢!

  13. 2007年7月25日 at 17:34 | #13
    smile

    我的对象类名是就是默认的post-body,为什么添加关键字以后,在模板里也加上了<script>代码。但是就是不起作用。请高手指点

    我的BLOG地址:
    http://www.nier2414.cn/z-blog17/post/xuanze-seo-gongsi.html

  14. 2007年10月7日 at 12:11 | #14

    用上了,谢谢Cool

  15. 2007年11月13日 at 16:28 | #15
    地狱狼

    为什么不能只替换一个关键字啊,把替换参数"igm"删掉,页面就会变得超慢。

  16. 2007年11月13日 at 21:21 | #16
    地狱狼

    我的意思是说只替换一个“插件”,毕竟满屏幕的的链接也不好看

    软件兔 于 2007-11-13 21:21:44 回复

    呵呵, 你的要求蛮特别的, 不过, 实现起来也不难, 看你的回复似乎你也是会写JS的, 我可以说一下思路你试一下:
    不要用正则替换, 改成用indexOf查找关键字第一次出现的位置, 然后用substr手工替换一次. 这样就能按你的想法进行了.

  17. 2007年12月6日 at 19:33 | #17
    cyg

    不错!

  18. 2007年12月9日 at 00:33 | #18

    博主,我安了这个插件了,后台看了后,就害怕了,这个插件倒是挺好的,但是一旦页面里出现多个字的话,那他们就全被加上链接了呢,能不能做成设置每个文章里单个关键词出现的次数,如果不能设置也希望能设置成出现一次,这样比较保险!不知道博客能不能解决这个问题的?解决了给个请回复我这个评论,我会经常来你这看你的答复的!

    软件兔 于 2007-12-9 0:33:47 回复

    你的问题跟17楼相同,看一下我给他的回复就可以了。他要的是只替换一次,如果想替换指定的次数,只需要加个循环就好了。

  19. 2008年1月4日 at 07:16 | #19
    fffffff

    插件

  20. 2008年1月15日 at 23:36 | #20
    zxoet

    1.8不能用了,有没有新版的啊

  21. 2008年2月9日 at 00:11 | #21
    amo

    怎么写权限啊??我不会,教教可以么?谢谢

  22. 2008年2月9日 at 00:11 | #22
    amo

    怎么写权限啊??我不会,教教可以么?谢谢
    http://www.shilianren.org.cn

    软件兔 于 2008-2-9 0:25:28 回复

    我过去看过了,没看到你在哪儿用的呀?加我MSN吧,我帮你调试一下。

  23. 2008年2月9日 at 17:08 | #23
    amo

    我是新手,怎么加MSN?谢谢帮忙

  24. 2008年2月11日 at 01:18 | #24
    amo

    我在我的博客里面加了这个插件,然后怎么弄?
    您一定要帮帮我啊,谢谢了

  25. 2008年2月11日 at 01:23 | #25
    amo

    请问你有QQ么?如果有,请加我好么?243707383

  26. 2008年3月2日 at 18:29 | #26
    amo

    小兔子,我实在不会弄,要不这样吧,你能不能直接在我网站上改?是需要进入后台么?我可以告诉你密码,我头都大了…麻烦你了~~

  27. 2010年2月10日 at 10:55 | #27

    这个必须顶。。。。

  1. 还没有 trackbacks
订阅评论