Làm thế nào để đổi tên yêu cầu mật khẩu mới liên kết mật khẩu?


7

Chúng tôi muốn đổi tên văn bản "Yêu cầu mật khẩu mới" trên trang đăng nhập của Drupal thành một số văn bản tùy chỉnh.

Trong tệp user.module, tôi thấy rằng văn bản này được mã hóa cứng

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

Có cách nào khác để đổi tên văn bản này thay vì sửa đổi lõi Drupal không?

Câu trả lời:


5

Bạn đã thử mô-đun String Overrides chưa?

Cung cấp một cách nhanh chóng và dễ dàng để thay thế bất kỳ văn bản nào trên trang web.

Đặc trưng

  • Dễ dàng thay thế bất cứ thứ gì đi qua t ()
  • Hỗ trợ ngôn ngữ, cho phép bạn ghi đè chuỗi bằng bất kỳ ngôn ngữ nào
  • Khả năng nhập / xuất tệp * .po, để dễ dàng di chuyển từ mô đun Địa điểm
  • Lưu ý rằng đây không phải là sự thay thế cho Locale vì có hàng ngàn phần ghi đè có thể gây ra nhiều đau đớn hơn sau đó mang lại lợi ích. Chỉ sử dụng điều này nếu bạn cần một vài thay đổi văn bản dễ dàng.

Tôi đã thử giải pháp bên dưới vì tôi muốn thay đổi văn bản để đăng ký nhưng nó không hoạt động với tôi trong D7. Không thực sự muốn cài đặt một mô-đun khác nhưng tôi thấy String Overrides là một mô-đun tuyệt vời và đã sử dụng nó để thay đổi một chuỗi các chuỗi. Mô-đun tuyệt vời!
John81

12

Mô-đun String Overrides là một gợi ý tốt nếu bạn có nhiều chuỗi hoặc cần liên tục thay đổi chúng, nhưng bạn cũng có thể đạt được điều này bằng cách chỉnh sửa phần ghi đè chuỗi của tệp settings.php .

Đơn giản chỉ cần bỏ qua phần để nó trông như thế này:

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

2
Tôi thích giải pháp này tốt hơn là cài đặt một mô-đun mới chỉ cho một nhiệm vụ này!
Alex Weber

Không bao giờ nhận ra rằng đây là một lựa chọn trước đây. Đó là một cách tiếp cận đẹp hơn nhiều so với việc cài đặt một mô-đun khác. Tất nhiên trừ khi bạn muốn cho phép người dùng có thể xác định văn bản mới từ bên trong UI.
drmonkeyninja

1
Mã ở trên là cho D6. Đối với D7, hãy sử dụng dấu ngoặc trống bổ sung như vậy: $ conf ['locale_custom_strings_en'] [''] = mảng ()
Pooch

4

Tôi mới thử cái này trong Drupal 7 nhưng nó không hoàn toàn đúng. Nó cần thêm một chút [''] bit. Những công việc này:

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

1

Tôi tìm thấy hai cách khác để làm điều đó:

Sử dụng tên mô-đun của bạn thay vì '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');
}

0

Bạn cũng có thể thực hiện nó trong template.phpchủ đề của mình, giải pháp linh hoạt hơn cho mục đích của tôi ( tôi muốn văn bản bằng tiếng Pháp và tiếng Anh cạnh nhau ):

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

Ban đầu lấy cảm hứng từ Geoff Hankerson . Cảm ơn anh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.