Bạn có thể làm điều này với hook_form_alter()
hoặc hook_form_FORM_ID_alter()
trong mô-đun tùy chỉnh hoặc trong tệp template.php của chủ đề.
function YOURMODULE_form_alter(&$form, &$form_state, $form_id) {
// Check the form_id
if ($form_id == 'YOUR_FORM_ID') {
// To hide the label
$form['your_form_element']['#title_display'] = 'invisible';
// To alter the label
$form['your_form_element']['#title'] = t('Your new title');
}
}
Nếu bạn sử dụng hook_form_FORM_ID_alter()
thay thế, bạn không cần kiểm tra form_id.
Bạn có thể tìm thêm thông tin trên Form API Reference cho #title
và #title_display
thuộc tính, và cũng có tất cả các yếu tố hình thức khác và các thuộc tính của họ.
Trong trường hợp Bộ sưu tập trường , nó có thể hơi phức tạp. Dưới đây là một mã ví dụ:
function YOURMODULE_form_YOUR_FORM_ID_alter(&$form, &$form_state, $form_id) {
$your_field_collection = element_children($form['your_field_collection'][LANGUAGE_NONE];
foreach ($your_field_collection as $key => $value) {
if (is_numeric($value)) {
$form['your_field_collection'][LANGUAGE_NONE][$val]['your_field_collection_field']['#title'] = t('Your new title');
$form['your_field_collection'][LANGUAGE_NONE][$val]['your_field_collection_field']['#title_display'] = 'invisible';
}
}
}
Giải thích về đoạn mã trên:
Đầu tiên tôi gán bộ sưu tập trường cho một biến, để làm cho nó dễ đọc hơn một chút. Tôi đã sử dụng LANGUAGE_NONE
để đơn giản nhưng một cách thực hành tốt hơn sẽ là sử dụng $form['your_field_collection']['#language']
, phải thừa nhận rằng nó làm cho toàn bộ mã phức tạp hơn để đọc.
Thứ hai, tôi đã sử dụng một foreach
, vì hầu hết thời gian chúng tôi sử dụng một bộ sưu tập trường nếu chúng tôi muốn có nhiều giá trị của một số bộ sưu tập các trường. Vì vậy, foreach
vòng lặp sẽ chăm sóc tất cả các trường hợp của bộ sưu tập trường.
Hack thứ ba, là một mánh khóe bẩn thỉu tôi học được từ một người nào đó trên Drupal.org, có thể sẽ có một cách tiếp cận tốt hơn, nhưng nó chỉ hoạt động nên tôi không đào sâu vào. Tôi kiểm tra nếu $value
là số, để loại trừ tất cả các thuộc tính meta và vòng lặp khác chỉ thông qua các yếu tố.
Sau đó, cuối cùng, trong mỗi phần tử tôi thay đổi trường trong bộ sưu tập trường.