как переписать сообщение по умолчанию drupal при публикации комментариев? - PullRequest
4 голосов
/ 29 июня 2011

Я хочу переписать сообщение по умолчанию для публикации комментария.

Например, я хотел бы отобразить " Ваш комментарий был отправлен модератору сайта и останется приватным. " вместо " Ваш комментарий был поставлен в очередь на проверку администраторами сайта и будет опубликовано после утверждения."

Я попытался вставить хук, но сообщение не переопределилось:

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

Ответы [ 4 ]

4 голосов
/ 29 июня 2011

Не используйте это, используйте Переопределение строк , чтобы изменить сообщение.В общем, если вы хотите перефразировать текст, не взламывайте его, переопределите его.

В 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.';
3 голосов
/ 06 июля 2011

@ 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");
}
0 голосов
/ 11 октября 2013

Возник вопрос в Drupal Questions SE , где данное решение состоит в том, чтобы использовать array_search() для поиска в массиве фактических сообщений, а затем сравнить переведенные строки, чтобы определить ключ строки, которую нужно изменить.Затем показывает, как его изменить.

Это решение работает, если реализовано как часть модуля, а изменение строки сообщения в файле настроек - нет.

0 голосов
/ 29 июня 2011

Сообщение добавляется в сеанс в comment_form_submit(), ПОСЛЕ нового комментария сохраняется.

Таким образом, либо вы изменяете форму комментария, добавляете свою собственную функцию отправки после основной, и удаляете там сообщение (что кажется лучшей идеей, поскольку таким образом это будет сделано только тогда, когда новаякомментарий действительно опубликован), или ...

На самом деле, нет 'или'.Первоначально хотел предложить что-то вроде hook_init() в качестве альтернативы, но нет, вы не хотите помещать это туда.;)

...