我们2010年开始使用Drupal时,内容都是放在node里面的,到2016年才开始在部分网站中使用直接建表的方式,当时的记录《在Drupal中直接导入、使用数据库》,后面从IP数据、2017年底的国语辞典系列等内容就使用了这种方式,再从2018年进行了《大数据量Drupal网站改造数据结构》,效果也是不错的,所以新内容我们基本都是采取的这种方式。
但有个问题没有解决,就是这种自建表主要适合做信息发布、资料查询类网站,本身是不带留言等互动功能的,解决的办法考虑有几种:
- 借用Drupal的node方式,为需要留言的页面创建一个内容为空的node,而嵌入其对应的comment表单和内容,这个办法实现起来简单,开发量很少,留言的管理功能强,但数据造成冗余、效率不高;
- 模仿Drupal的node方式,自己建一个comment表,开发一个小型的留言管理模块,与其它自建表和页面结合起来,这个开发起来有些复杂,留言管理功能可以做得与Drupal类似;
- 在自建表中添加一个comment字段,开发一个小型的留言管理模块,这个开发起来比较简单,留言管理功能没有那么强大,但基本够用。
权衡需求和实现难度后,上周我采用了最后一种办法,在四个国语辞典上实现了简易的留言功能:
- 匿名用户、注册用户都可以填写的表单,有用户名、Email、留言内容三个输入项,最后一个为必填;
- 调用了Drupal Form API,一些验证、提示等都可以交给Drupal系统去处理;
- 嵌入了Drupal安装的Captcha、ReCaptcha模块功能到Form中,并可以让注册用户跳过验证码;
- 留言框上方添加锚点,发布成功后的提示信息中有“查看留言”的链接可以方便点击查看;
- 留言发布后有提示消息给发布者、在Drupal日志中有记录、还发通知邮件给管理员;
- 留言内容采用json数据保存到comment字段中,方便调用处理、增加、修改显示方式等;
- 另外有管理员编辑功能,可以打开comment字段内容,直接编辑json数据内容;
- Views中添加“留言列表”Page和一个“新近留言”Block,方便用户和管理员查看。
这个功能目前刚刚出来,还在试用中,一些地方还需要完善,例如管理员的留言管理还不是很方便,需要编辑json数据,以后可以专门做得更简单一些,还要观察是否有其它漏洞、不方便的地方,逐步改进后再可以实施到更多需要的网站中,毕竟添加互动功能后才能与浏览者更好交流、了解需求。
程序我就不贴出来了,我自己认为写得一般,自己用还可以,共享出来就还算了吧。如果对Drupal有一定了解的开发者,也就是几天时间可以做出来。
评论