代码之家  ›  专栏  ›  技术社区  ›  Chris Morgan

Drupal模块控制用户发帖频率?

  •  1
  • Chris Morgan  · 技术社区  · 14 年前

    本周我们在 PortableApps.com

    我想知道,同时是否有任何模块可以控制用户可以发布的频率,例如50个小时,或者对于新用户来说10个小时。这至少意味着,我们不必一次在admin/content/comment中清除300条评论50条,而是需要清除一个较小的数字。(添加页面以删除用户的所有内容并阻止这些内容的模块也很有用!)

    我相信WordPress有一个插件可以做到这一点,但是Drupal找不到这样的东西。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Jozzeh    14 年前

    对于第二个问题,我想看看 User Delete module (click) .

    该模块还禁用用户帐户并取消发布来自某个用户的所有节点/注释。通过扩展代码,您可以轻松地创建另一种可能性,即取消发布+删除某个用户的所有节点/注释并阻止该帐户。


    另一个选择是这样使视图(使用视图模块)只供管理员查看,在这里您可以使用过滤器选择某个用户,然后列出他/她的文章。然后在node-contenttype.tpl.php中放置一个按钮,该按钮调用一个删除所有节点/注释和用户的函数。


    第一个问题( 后频 )

    我一直在考虑评论文章的限制。如果我没记错的话,Drupal会将注释存储在一个单独的表中,并具有特定于注释的函数。

    comment_nodeapi function 我会在“插入”操作中检查当前用户在特定时间段内已经发表了多少评论。

    为了检查这一点,我将在数据库上编写一个自定义的sql查询,该查询接受uid所做的所有注释的计数,其中post_日期大于NOW-1hour。如果这个数大于10或15或者你想要的任何后频,你就给 a message back to the user

    (例如: print $user->name; )

    您必须自己检查sql查询,但是当您有足够的数量时,这里有一些代码:

    <?php
    function comment_nodeapi(&$node, $op, $arg = 0) {
      switch ($op) {
    
        case 'insert':
          //PLACE HERE THE SQL TO GET THE COUNT
          if($count > 15){
              $repeat = FALSE;
              $type = 'status'
              drupal_set_message("You have reached the comment limit for this time.", $type, $repeat);
              break;
          }else{
              db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->changed, $node->uid);
              break;
          }
       }
    }
    ?>
    

    (此代码尚未经过测试,因此没有保证,但这应该会使您走上正确的轨道)

        2
  •  1
  •   DrColossos    14 年前

    我建议你 Mollom

    他们提供了 free service 还有一些付费的解决方案。我们正在为一些客户使用它,它是值得的钱。它在Drupal中也集成得非常好。

        3
  •  1
  •   berkes    14 年前

    Comment Limit 可能是你需要的。

        4
  •  0
  •   atomicjeep    14 年前

    http://drupal.org/project/spam http://drupal.org/project/antispam-支持akismet