徐伟轩博客-爱写歌的程序员思考和科普的日常自媒体

统计
TypechoJoeTheme

A_

徐伟轩博主
2020-06-16 10:23
/
0 评论
/
524 阅读
/
500 字
06月16

Akcms其实是一个比较不错的CMS程序,小巧是真小巧,功能也很强大,不过这些功能大部分都在水面下,大部分人能用到的只是它露出水面的冰山一角,所以,更多的是将这个akcms当作博客程序来用。可是作为博客,它的评论功能和wordpress比起来又差了许多。不过许多功能不是不能实现,而是不懂怎么实现,下面我就整理一部分资料,讲的是通过akcms的过滤器功能,来实现评论者的gravatar头像显示和表情显示功能。

一、实现gravatar头像
因为程序默认的comments表格里没有email这个项,所以得通过手动添加,添加办法见梅川类酷的《AKCMS 4.0.3利用文章评论制作自定义字段的留言本》,最新版本4.0.9同样适用。

添加完email字段后,在程序后台添加一个过滤器,内容为:

php:preg_replace('/md5((.*))/Uise', "md5('\1')", $input);
在评论模板里引用这个自定义字段:

  1. <{getcomments bandindex="1" page=$page itemid=$id num="1000" filter="1" template="
  2. <img src=()http://www.gravatar.com/avatar.php?gravatar_id=md5([email])&size=40&d=identicon&r=G() />
  3. "}>
复制

函数中的filter="1"里的1对应的是你过滤器的ID,这样就可以显示了。

二、实现表情功能
这个是过滤器结合javascript来实现评论表情功能的。

1)准备好表情,将它传到你的空间某目录下,比如下面例子是传到根目录images文件夹的face文件夹下,同时将表情图片的文件名用规律的数字修改好;

2)在评论模板里添加下面的js,这里限制每条评论最多3个表情:

  1. function add_face(id, wrap)
复制

{

  1. var o = document.getElementById(wrap);
  2. var s = o.value;
  3. var reg = new RegExp("FA:[0-9][0-9]", "gm");
  4. if (s.match(reg) == null)
  5. {
  6. var a = 1;
  7. }
  8. else
  9. {
  10. if (s.match(reg).length >= 3)
  11. {
  12. alert("不要表情泛滥哦!");
  13. return;
  14. }
  15. }
  16. o.value = o.value + "[FA:" + id + "]";
  17. o.focus();
复制

}

3)在评论框前后需要显示表情的地方加以下代码

  1. <p><a href="javascript:add_face('01', 'comment');"><img title="发呆" alt="发呆" src="/images/face/01.gif" border="0"></a>
  2. <a href="javascript:add_face('02', 'comment');"><img title="可爱" alt="可爱" src="/images/face/02.gif" border="0"></a>……</p>
复制

代码javascript:add_face('01', 'comment');中的连续数字01、02对应的是表情图片名称,comment是评论框的id。

4)通过过滤器将评论的表情符转成图片:

  1. preg_replace:\[\FA:([0-9]+)\]|<img src="/images/face/$1.gif" />
复制

5)在评论模板中调用上面的过滤器,同gravatar头像方法,多个过滤器可合并。

Akcms
赞(0)
赞赏
感谢您的支持,我们会继续努力哒!
版权:

徐伟轩博客-爱写歌的程序员思考和科普的日常自媒体

本文链接:

https://letus.top/archives/16.html(转载时需注明本文出处及文章链接)

如无特别注明,本站内容为原创。

如需转载或刊登,请联系我们获得授权。

评论 (0)
本篇文章评论功能已关闭

亲爱的朋友

一切伟大,源于勇敢的开始。

人生倒计时

今日已经过去2小时
9%
这周已经过去6
85%
本月已经过去15
48%
今年已经过去3个月
25%