点点模板中关键词自动加链接的实现方法

2012.10.08 分享 4846 人浏览 留言

这是个好东西,看能不能从里面折腾出更多的内容

今天看到群(113082357)里有朋友问关键字替换的方法.每次写文章手动添加确实有些麻烦.所以这里简单写了一个小函数.有需要的朋友就拿去吧.只是个简单的思路.可以继续扩充的.像前面群里说的'短代码'功能实现的思路也是类似的.

不过需要注意的是:这处理只是在数据从库中取出后,返回页面之前.对内容进行了一下再加工.所以在rss页面,点点站内等页面是不会有效果的.所以这种关键词加链接相对来说还可以.但那种短代码就不太好了.会造成阅读障碍.

废话不说.直接上代码.

<script type="server/javascript">
var list = new Array();
// list.push(['百度','http://www.baidu.com','百度一下你就知道',true]);

/**
* 关键字替换函数
* @param {string} str 需要进行关键字替换的字符串
* @param {array} obj [关键字,网址,鼠标悬停,是否新窗口打开]
* @param {string} [sign] 需要替换的关键字前缀.默认`` (避免重复替换)
* @return {string} 替换后的字符串
*/
function n_keyword(str,ary,sign){
sign = sign?sign:'``';
for(var i=0;i<ary.length;i++){
var regexp = new RegExp(sign+'('+ary[i][0]+')','g');
var target = ary[i][3]?'_blank':''
str = str.replace(regexp,'<a href="'+ary[i][1]+'" title="'+ary[i][2]+'" target="'+target+'">$1</a>');
}
return str;
}
</script>

以上代码放入模板头部就好了.然后说下怎么增加关键字.

看上面代码的第三行.我注视掉了.这就是添加方法.复制此行.去掉前面的双斜杠.然后修改后面的四个参数就好了.第一个是文章中需要替换的文字.第二个是url.第三个是注释.可以留空''.第四个是布尔值.true的时候会新窗口打开.

list.push(['百度','http://www.baidu.com','百度一下你就知道',true]);
list.push(['搜狐','http://www.sohu.com']);

类似这样添加就好了.然后说说怎么用.这里只说二代吧..一代类似

比如说在posts循环里面的text类型里输出摘要post.summary

原来简写是

<?= post.summary ?>

现在就可以改成

<?= n_keyword(post.summary,list) ?>

同样.输出替换后的内容部分就是

<?= n_keyword(post.content,list) ?>

最后说一点.比如说你想替换'百度'这个关键词.那在写博客的时候就写``百度.

`就是键盘上1左边哪个键.按两次.然后跟谁你需要加链接的关键词就ok了.

如果不喜欢``那也没关系.n_keyword还有第三个参数,可以自定义这个前缀.

例如

<?= n_keyword(post.content,list,'!!') ?>

这样就是两个叹号开头了.

为了避免重复替换以及误替换.这个前缀最好不要改为空字符串.

 

大概就是这个样子了.点点的模板机制还是很强大的.有问题的尽管回复吧.

原文地址:NMTuan:

文章地址:http://huilang.me/auto-keywords/

回复本文

电子邮件地址不会被公开。 必填项已用*标注

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif