刚开始用Drupal搭建网站的时候就开启了留言Comment功能,验证码Captcha是必须启用的,否则垃圾信息会迅猛增加,而当子网站数量、系列网站增多(例如有几十、几百个)以后,因为查看哪些网站有留言就太麻烦了,只好基本上都关闭了留言功能,只保留了少数几个交互性比较强、内容必须由用户来提供的网站开启留言等功能。

  考虑到网站的未来发展,还是需要尽量让用户参与网站的互动,所以近期准备把留言功能再打开,其中有两点是必须的:开启验证码和邮件提醒,而且因为涉及到的站点多,初次设置及未来修改还需要能够批量进行才好。

  这里把最近的一些尝试记录下来,注意前提是安装了drush命令行方式,多站点就用linux脚本来循环批量设置,如果需要开启的模块还没有下载的话,需要先下载再开启:

# 开启相关模块
drush en comment -y #开启评论
drush en trigger -y #开启触发器
drush en contact -y #开启联系
drush en token -y #开启令牌
drush en captcha -y #开启验证码
drush en image_captcha -y #开启图片验证码
# 修改匿名用户权限
drush ev 'user_role_grant_permissions(1, array("post comments"));' #给予匿名用户发帖权限
drush ev 'user_role_revoke_permissions(1, array("use text format filtered_html"));' #不允许匿名用户使用过滤的html格式,只能用纯文本格式
drush vset comment_anonymous_gongshang 1 #设置匿名用户评论某内容类型时是否可以输入联系方式:0不能、1可以、2必须
# 设置动作、触发器
drush sql-query "INSERT INTO actions (aid, type, callback, parameters, label) VALUES ('1', 'system', 'system_send_email_action', 'a:3:{s:9:\"recipient\";s:15:\"mingluji@qq.com\";s:7:\"subject\";s:61:\"[comment:author] at [comment:node:title] post [comment:title]\";s:7:\"message\";s:46:\"From:[comment:node:url] Comment:[comment:body]\";}', 'send email to admin');" #直接修改actions表,添加send email to admin这个动作,注意insert只能执行一次,如果修改的话,再用update命令
drush sql-query "INSERT INTO trigger_assignments (hook, aid, weight) VALUES ('comment_presave', '1', 1);" #直接修改trigger_assignments表,添加评论预保存时触发send email to admin这个动作,注意insert只能执行一次,如果修改的话,再用update命令
# 设置每个页面是否开启评论:0不能(默认)、1关闭(只读)、2开放(读写)comments are allowed on this node: 0 = no, 1 = closed (read only), 2 = open (read/write)
drush sql-query "UPDATE node SET comment = 2 WHERE type = 'gongshang';" #直接修改node表,设置gongshang内容类型的每个页面是否允许留言
drush sql-query "UPDATE node_revision SET comment = 2 WHERE nid IN (SELECT nid FROM node WHERE type = 'gongshang');" #直接修改node_revision表,也是以上目的
# 设置验证码
drush vset captcha_default_challenge "image_captcha/Image" #设置默认的验证方式为图片验证码
drush sql-query "UPDATE captcha_points SET captcha_type = 'default' WHERE captcha_points.form_id = 'comment_node_gongshang_form';" #直接修改captcha_points表,让gongshang评论使用默认的验证方式
drush sql-query "UPDATE captcha_points SET captcha_type = 'default' WHERE captcha_points.form_id = 'contact_site_form';" #直接修改captcha_poings表,让“联系网站”功能使用默认的验证方式

Drupal6

# 开启相关模块
drush en comment -y #开启评论
drush en trigger -y #开启触发器
drush en contact -y #开启联系
drush en token -y #开启令牌
drush en captcha -y #开启验证码
drush en image_captcha -y #开启图片验证码
drush en permissions_api -y #开启修改权限的api
drush en permissions_reset -y #开启重置权限(可以查看权限列表)
# 修改匿名用户权限
drush perm-grant --roles='anonymous user' --permissions='access comments' #匿名用户可以查看评论
drush perm-grant --roles='anonymous user' --permissions='post comments' #匿名用户可以发布评论
drush perm-grant --roles='authenticated user' --permissions='access comments' #注册用户可以查看评论
drush perm-grant --roles='authenticated user' --permissions='post comments' #注册用户可以发布评论
drush perm-grant --roles='admin' --permissions='access comments' #管理员可以查看评论
drush perm-grant --roles='admin' --permissions='post comments' #管理员可以发布评论
drush perm-grant --roles='admin' --permissions='administer comments' #管理员可以管理评论
drush perm-grant --roles='admin' --permissions='post comments without approval' #管理员户可以不需要审核而发布评论
#不允许匿名用户使用过滤的html格式,只能用纯文本格式,设置办法还没有找到
drush vset comment_anonymous_gongshang 1 #设置匿名用户评论某内容类型时是否可以输入联系方式:0不能、1可以、2必须
drush vset comment_form_location_gongshang 1 #设置某内容类型评论的表单是放置在页面下方(默认的0是在新页面)
# 设置动作、触发器
drush sql-query "INSERT INTO actions (aid, type, callback, parameters, description) VALUES ('1', 'system', 'token_actions_send_email_action', 'a:3:{s:9:\"recipient\";s:15:\"mingluji@qq.com\";s:7:\"subject\";s:88:\"[comment-author-name] post comment [comment-title] @ [comment-node-title] of [site-name]\";s:7:\"message\";s:63:\"From: [node-url]#comment-[comment-cid]\r\nComment: [comment-body]\";}', 'Send tokenized e-mail to webmaster');" #直接修改actions表,添加send tokenized email to admin这个动作,注意insert只能执行一次,如果修改的话,再用update命令
drush sql-query "INSERT INTO trigger_assignments (hook, op, aid, weight) VALUES ('comment', 'insert', '1', 1), ('comment', 'update', '1', 1);" #直接修改trigger_assignments表,添加评论预保存时触发send tokenized email to admin这个动作,注意insert只能执行一次,如果修改的话,再用update命令
# 设置每个页面是否开启评论:0不能(默认)、1关闭(只读)、2开放(读写)comments are allowed on this node: 0 = no, 1 = closed (read only), 2 = open (read/write) 
drush sql-query "UPDATE node SET comment = 2 WHERE type = 'gongshang';" #直接修改node表,设置gongshang内容类型的每一个页面是否允许留言 
# 设置验证码
drush vset captcha_default_challenge "image_captcha/Image" #设置默认的验证方式为图片验证码
drush sql-query "UPDATE captcha_points SET captcha_type = 'default' WHERE captcha_points.form_id = 'comment_form';" #直接修改captcha_points表,让所有内容类型的评论使用默认的验证方式
drush sql-query "UPDATE captcha_points SET captcha_type = 'default' WHERE captcha_points.form_id = 'contact_mail_page';" #直接修改captcha_poings表,让“联系网站”功能使用默认的验证方式