我們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有一定了解的開發者,也就是幾天時間可以做出來。
评论