如何在drupal中更改注释表单的标题

时间:2011-03-23 03:19:34

标签: drupal spam

在我的网站上有“登录或注册发表评论......”

我想将消息更改为: “登录或注册发表评论(评论将被审核)..”

因为很多垃圾邮件发送者只是创建登录来发布垃圾评论。 虽然现在所有评论都已经过审核。发布此消息将清楚地表明垃圾邮件可能无法发送,垃圾邮件发送者也不会创建登录信息。

4 个答案:

答案 0 :(得分:2)

假设您使用的是Drupal 6,则创建注释表单的代码位于Drupal模块目录的comments.module文件中。幸运的是,该功能允许主题化。

您可以做的是复制并粘贴功能theme_comment_post_forbidden($ node)并将其放在主题目录的template.php文件中。您还需要重命名该功能,将“主题”替换为您的主题名称。

例如,假设您的主题名称是'utilitiesindia'。然后,您将函数重命名为utilitiesindia_comment_post_forbidden。

因此,在名为utilitiesindia的主题的template.php文件中,使用此函数:

/**
 * Theme a "you can't post comments" notice.
 *
 * @param $node
 *   The comment node.
 * @ingroup themeable
 */
function utiltiesindia_comment_post_forbidden($node) {
  global $user;
  static $authenticated_post_comments;

  if (!$user->uid) {
    if (!isset($authenticated_post_comments)) {
      // We only output any link if we are certain, that users get permission
      // to post comments by logging in. We also locally cache this information.
      $authenticated_post_comments = array_key_exists(DRUPAL_AUTHENTICATED_RID, user_roles(TRUE, 'post comments') + user_roles(TRUE, 'post comments without approval'));
    }

    if ($authenticated_post_comments) {
      // We cannot use drupal_get_destination() because these links
      // sometimes appear on /node and taxonomy listing pages.
      if (variable_get('comment_form_location_'. $node->type, COMMENT_FORM_SEPARATE_PAGE) == COMMENT_FORM_SEPARATE_PAGE) {
        $destination = 'destination='. rawurlencode("comment/reply/$node->nid#comment-form");
      }
      else {
        $destination = 'destination='. rawurlencode("node/$node->nid#comment-form");
      }

      if (variable_get('user_register', 1)) {
        // Users can register themselves.
        return t('<a href="@login">Login</a> or <a href="@register">register</a> to post comments(comments will be moderated)', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination)))
);
      }
      else {
        // Only admins can add new users, no public registration.
        return t('<a href="@login">Login</a> to post comments', array('@login' => url('user/login', array('query' => $destination))));
      }
    }
  }
}

答案 1 :(得分:1)

答案 2 :(得分:1)

在Drupal 6中:
另一种选择是创建一个小型自定义模块。这使用hook_link_alter()。这是一个用于更改“登录发布新评论”链接标题的小示例模块:(将MYMODULE_NAME的每个实例替换为您为模块选择的名称)

步骤1:创建名为MYMODULE_NAME.info的文件并添加:

; $Id$
name = "MYMODULE_NAME"
description = "Change the appearance of links that appear on nodes"
core = 6.x

第2步:创建名为MYMODULE_NAME.module的文件并添加:

<?php
  // $Id$;

  /**
   * Implementation of hook_link_alter
   */
  function MYMODULE_NAME_link_alter(&$links, $node){
    if (!empty($links['comment_forbidden'])) {
      // Set "Login to post new comment" link text
      $links['comment_forbidden']['title'] = 'NEW TEXT';

      // Add this to allow HTML in the link text
      $links['comment_forbidden']['html'] = TRUE;
    }
  }

步骤3:将这些文件放在名为MYMODULE_NAME的文件夹中,将文件夹放在sites / all / modules中,然后启用模块

答案 3 :(得分:1)

如果你真的想阻止垃圾邮件发送者创建帐户,你应该使用类似CAPTCHA模块的东西,因为他们通常使用的机器人在任何情况下都会忽略指令。

http://drupal.org/project/captcha