it-swarm-es.com

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

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 Drupal?

7
Ajinkya Kulkarni

¿Has probado el módulo Anulaciones de cadena ?

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

Características

  • 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.
5
Kevin

El módulo de anulaciones de cadenas es una buena sugerencia si tiene muchas cadenas o necesita modificarlas constantemente, pero también puede lograrlo 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',
);
12
jhedstrom

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

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

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');
}
1
pferlito

También puedes hacerlo en template.php de su tema, solución más flexible para mi propósito ( Quería el texto en francés e inglés al 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.

0
anou