Bagaimana Mengganti Nama tautan "Minta kata sandi baru"?

7

Kami ingin mengganti nama teks "Minta kata sandi baru" pada halaman login Drupal menjadi beberapa teks khusus.

Dalam file user.module, saya melihat bahwa teks ini dikodekan dengan keras

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));

Apakah ada cara lain untuk mengganti nama teks ini daripada memodifikasi inti Drupal?

Ajinkya Kulkarni
sumber

Jawaban:

5

Sudahkah Anda mencoba modul String Overrides ?

Memberikan cara cepat dan mudah untuk mengganti teks apa pun di situs.

fitur

  • Mudah mengganti apa pun yang melewati t ()
  • Dukungan lokal, memungkinkan Anda untuk mengganti string dalam bahasa apa pun
  • Kemampuan untuk mengimpor / mengekspor file * .po, untuk memudahkan migrasi dari modul Lokal
  • Perhatikan bahwa ini bukan pengganti Lokal karena memiliki ribuan penggantian dapat menyebabkan lebih banyak rasa sakit daripada manfaat. Gunakan ini hanya jika Anda memerlukan beberapa perubahan teks mudah.
Kevin
sumber
Saya mencoba solusi di bawah ini karena saya ingin mengubah teks untuk mendaftar tetapi tidak berfungsi untuk saya di D7. Tidak benar-benar ingin menginstal modul lain tetapi saya menemukan String Overrides menjadi modul yang hebat dan menggunakannya untuk mengubah banyak string. Modul luar biasa!
John81
12

Modul String Overrides adalah saran yang bagus jika Anda memiliki banyak string, atau harus terus mengubahnya, tetapi Anda juga dapat mencapainya dengan mengedit bagian override string pada file settings.php Anda .

Cukup batalkan komentar pada bagian tersebut sehingga terlihat seperti ini:

$conf['locale_custom_strings_en'] = array(
  'Request new password' => 'MY CUSTOM TEXT FOR A NEW PASSWORD',
);
jhedstrom
sumber
2
Saya suka solusi ini lebih baik daripada menginstal modul baru hanya untuk tugas yang satu ini!
Alex Weber
Tidak pernah menyadari bahwa ini adalah pilihan sebelumnya. Ini pendekatan yang jauh lebih baik daripada menginstal modul lain. Kecuali tentu saja Anda ingin mengizinkan pengguna untuk dapat menentukan teks baru dari dalam UI.
drmonkeyninja
1
Kode di atas adalah untuk D6. Untuk D7 gunakan braket kosong tambahan seperti: $ conf ['locale_custom_strings_en'] [''] = array ()
Pooch
4

Saya baru saja mencoba ini di Drupal 7 tetapi itu tidak benar. Perlu sedikit tambahan [''] ditambahkan. Ini bekerja:

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

Saya menemukan dua cara lagi untuk melakukannya:

Gunakan nama modul Anda alih-alih '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
sumber
0

Anda juga dapat melakukannya di template.phptema Anda, solusi lebih fleksibel untuk tujuan saya ( saya ingin teks dalam bahasa Prancis dan Inggris berdampingan ):

/**
 * 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;
  }
} 

Awalnya terinspirasi oleh Geoff Hankerson . Berkat dia.

anou
sumber