我想覆盖发布评论的默认消息。
例如,我想显示“您的评论已发送给网站版主并将保密。”而不是“您的评论已排队等待网站管理员审核并将在批准后发布。“
我尝试了钩子插入,但它没有覆盖消息:
function custom_comment_insert($comment) {
//drupal_get_messages(null, true);
unset($_SESSION['messages']);
drupal_set_message(t('override like this.'));
}
答案 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()
来搜索实际的消息数组,然后比较翻译的字符串以识别要更改的字符串的键。然后展示如何改变它。
此解决方案在作为模块的一部分实现时有效,而更改设置文件中的消息字符串则不然。