Como renomear o link "Solicitar nova senha"?

7

Queremos renomear o texto "Solicitar nova senha" na página de login do Drupal para algum texto personalizado.

No arquivo user.module, vejo que este texto está codificado

if (variable_get('user_register', 1)) {
    $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
  }
  $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
  $form['links'] = array('#value' => theme('item_list', $items));

Existe alguma outra maneira de renomear esse texto em vez de modificar o núcleo do Drupal?

Ajinkya Kulkarni
fonte

Respostas:

5

Você já experimentou o módulo Substituições de String ?

Fornece uma maneira rápida e fácil de substituir qualquer texto no site.

Recursos

  • Substitua facilmente qualquer coisa que passe por t ()
  • Suporte de localidade, permitindo substituir cadeias de caracteres em qualquer idioma
  • Capacidade de importar / exportar arquivos * .po, para facilitar a migração do módulo Locale
  • Observe que este não é um substituto para o Locale, pois ter milhares de substituições pode causar mais dor do que se beneficiar. Use isso apenas se você precisar de algumas alterações fáceis no texto.
Kevin
fonte
Tentei a solução abaixo porque queria alterar o texto para registro, mas não funcionou para mim no D7. Realmente não queria instalar outro módulo, mas achei o String Overrides um ótimo módulo e usei-o para alterar um monte de strings. Módulo impressionante!
precisa saber é o seguinte
12

O módulo Substituições de strings é uma boa sugestão se você tiver muitas strings ou precisar alterá-las constantemente, mas você também pode conseguir isso editando a seção de substituições de strings do seu arquivo settings.php .

Simplesmente remova o comentário da seção para que fique assim:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
fonte
2
Gosto mais desta solução do que instalar um novo módulo apenas para esta tarefa!
Alex Weber
Nunca percebi que isso era uma opção antes. É uma abordagem muito mais agradável do que instalar outro módulo. A menos que você queira permitir que os usuários possam definir o novo texto na interface do usuário.
precisa saber é o seguinte
11
O código acima é para D6. Para o D7, use o colchete vazio adicional da seguinte maneira: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch
4

Eu apenas tentei isso no Drupal 7, mas não estava certo. Precisa de um bit extra [''] adicionado. Isso funciona:

$conf['locale_custom_strings_en'][''] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
Simon Davies
fonte
1

Encontrei mais duas maneiras de fazer isso:

Use o nome do seu módulo em vez de 'mymodulename':

/*
 * Implements hook_menu_alter(). Change link text of 'Request new password' link.
 */
function mymodulename_menu_alter(&$items) {
      $items['user/password']['title'] = t('Reset password');
}
pferlito
fonte
0

Você também pode fazer isso no template.phpseu tema, solução mais flexível para o meu propósito ( eu queria o texto em francês e inglês lado a lado ):

/**
 * Implements hook_form_alter(&$form, &$form_state, $form_id)
 */
function YOURTHEME_form_alter(&$form, &$form_state, $form_id) {

  switch ($form_id) {
    //Modify the User Login Block Form
    case 'user_login_block':     
      $item = array(); 
      $items[] = l( t('Request new password') . ' |  <span class="en">' . t('Request new password', array(), array('langcode' => 'en')) . '</span>', 'user/password', array('html' => TRUE) ); 

      $form['links']['#markup'] = theme('item_list', array('items' => $items));

    break;
  }
} 

Inspirado original por Geoff Hankerson . Graças a ele.

anou
fonte