点点模板中关键词自动加链接的实现方法
这是个好东西,看能不能从里面折腾出更多的内容
今天看到群(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: