¿Cómo cambiar el nombre del enlace "Solicitar nueva contraseña"?

7

Queremos cambiar el nombre del texto "Solicitar nueva contraseña" en la página de inicio de sesión de Drupal a un texto personalizado.

En el archivo user.module, veo 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));

¿Hay alguna otra forma de renombrar este texto en lugar de modificar el núcleo de Drupal?

Ajinkya Kulkarni
fuente

Respuestas:

5

¿Has probado el módulo String Overrides ?

Proporciona una manera rápida y fácil de reemplazar cualquier texto en el sitio.

Caracteristicas

  • Reemplace fácilmente cualquier cosa que pase por t ()
  • Soporte regional, que le permite anular cadenas en cualquier idioma
  • Posibilidad de importar / exportar archivos * .po, para facilitar la migración desde el módulo Locale
  • Tenga en cuenta que esto no es un reemplazo de Locale, ya que tener miles de anulaciones puede causar más dolor que beneficio. Use esto solo si necesita algunos cambios de texto fáciles.
Kevin
fuente
Intenté la solución a continuación porque quería cambiar el texto para registrarme, pero no me funcionó en D7. Realmente no quería instalar otro módulo, pero encontré que String Overrides es un gran módulo y lo usé para cambiar un montón de cadenas. Módulo impresionante!
John81
12

El módulo de anulaciones de cadenas es una buena sugerencia si tiene muchas cadenas o necesita modificarlas constantemente, pero también puede lograr esto editando la sección de anulaciones de cadenas de su archivo settings.php .

Simplemente descomente la sección para que se vea así:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
fuente
2
¡Me gusta más esta solución que instalar un nuevo módulo solo para esta tarea!
Alex Weber
Nunca me di cuenta de que esta era una opción antes. Es un enfoque mucho mejor que instalar otro módulo. A menos que, por supuesto, desee permitir que los usuarios puedan definir el nuevo texto desde la interfaz de usuario.
drmonkeyninja
1
El código anterior es para D6. Para D7, use el paréntesis vacío adicional de la siguiente manera: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch
4

Acabo de probar esto en Drupal 7 pero no estaba del todo bien. Necesita un bit adicional [''] agregado. Esto funciona:

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

Encontré dos formas más de hacerlo:

Use el nombre de su módulo en lugar 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
fuente
0

También puede hacerlo desde template.phpsu tema, la solución más flexible para mi propósito ( quería el texto en francés e inglés de 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;
  }
} 

Originalmente inspirado por Geoff Hankerson . Gracias a él.

anou
fuente