如何在发表评论时覆盖drupal默认消息?

时间:2011-06-29 13:53:43

标签: drupal drupal-modules drupal-7

我想覆盖发布评论的默认消息。

例如,我想显示“您的评论已发送给网站版主并将保密。”而不是“您的评论已排队等待网站管理员审核并将在批准后发布。

我尝试了钩子插入,但它没有覆盖消息:

function custom_comment_insert($comment) {
    //drupal_get_messages(null, true);
    unset($_SESSION['messages']);
    drupal_set_message(t('override like this.'));
}

4 个答案:

答案 0 :(得分:4)

不要使用它,请使用String Overrides来更改邮件。一般来说,如果你想改写文字,不要破解它,覆盖它。

在Drupal 7中,您可以使用settings.php直接更改它:(请参阅http://preprocess.me/drupal-override-strings-in-settingsphp

$conf['locale_custom_strings_en']['Your comment has been queued for review by site administrators and will be published after approval.'] = 'Your comment has been sent to the site moderator and will remain private.';

答案 1 :(得分:3)

@Maciej Zgadzaj您的解决方案也可以。 我在hook_form_alter http://bit.ly/12u09O

上找到了一个有用的教程
function private_comments_form_alter(&$form, $form_state, $form_id) {
switch($form_id) {
        case 'comment_node_proposed_rules_form':
            unset($form['field_comment_public']);
        $form['#submit'][] = 'private_comments_comments_form_submit';
        //$form['#submit'][]='my_submit_test';
        break;
}
}
function private_comments_comments_form_submit($form, &$form_state){
unset($_SESSION['messages']);
drupal_set_message("this is a form test");
}

答案 2 :(得分:0)

在保存新评论后,消息将添加到comment_form_submit()中的会话中。

所以要么你改变评论形式,在主要的形式之后添加你自己的提交功能,并在那里删除消息(这似乎是一个更好的主意,因为这种方式只有当一个新评论真的这样做时才会这样做张贴),或...

实际上,没有'或'。最初想建议像hook_init()之类的东西作为替代,但不,你不想把它放在那里。 ;)

答案 3 :(得分:0)

Drupal Answers SE有一个问题,其中给出的解决方案是使用array_search()来搜索实际的消息数组,然后比较翻译的字符串以识别要更改的字符串的键。然后展示如何改变它。

此解决方案在作为模块的一部分实现时有效,而更改设置文件中的消息字符串则不然。