Adakah yang tahu cara mengganti nama tombol komentar "simpan"? Saya mencoba mengubahnya menjadi "Posting". Saya menggunakan Drupal 7 dan sub tema Zen.
Adakah yang tahu cara mengganti nama tombol komentar "simpan"? Saya mencoba mengubahnya menjadi "Posting". Saya menggunakan Drupal 7 dan sub tema Zen.
Jawaban:
Untuk Drupal 7, Anda perlu membuat modul khusus yang mengimplementasikan hook_form_FORM_ID_alter()
menggunakan kode yang mirip dengan yang berikut (ganti "mymodule" dengan nama pendek dari modul yang Anda tulis):
function mymodule_form_comment_form_alter(&$form, &$form_state) {
if (isset($form['actions']['submit'])) {
$form['actions']['submit']['#value'] = t('Post');
}
}
comment_form () menggunakan kode berikut, untuk menentukan tombol formulir:
// Only show the save button if comment previews are optional or if we are
// already previewing the submission.
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#access' => ($comment->cid && user_access('administer comments')) || variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || isset($form_state['comment_preview']),
'#weight' => 19,
);
$form['actions']['preview'] = array(
'#type' => 'submit',
'#value' => t('Preview'),
'#access' => (variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_DISABLED),
'#weight' => 20,
'#submit' => array('comment_form_build_preview'),
Untuk Drupal 6, kode tersebut harus yang berikut:
function mymodule_form_comment_form_alter(&$form, &$form_state) {
if (isset($form['submit'])) {
$form['submit']['#value'] = t('Post');
}
}
Saya menambahkan if (isset($form['submit'])) {}
bagian karena dalam Drupal 6, comment_form()
mendefinisikan tombol formulir menggunakan kode berikut, dan tombol yang Anda coba ubah tidak dapat hadir dalam formulir.
// Only show save button if preview is optional or if we are in preview mode.
// We show the save button in preview mode even if there are form errors so that
// optional form elements (e.g., captcha) can be updated in preview mode.
if (!form_get_errors() && ((variable_get('comment_preview_' . $node->type, COMMENT_PREVIEW_REQUIRED) == COMMENT_PREVIEW_OPTIONAL) || ($op == t('Preview')) || ($op == t('Save')))) {
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#weight' => 19,
);
}
$form['preview'] = array(
'#type' => 'button',
'#value' => t('Preview'),
'#weight' => 20,
);
hook_form_FORM_ID_alter()
.
Untuk Drupal 6, jawaban di atas yang menyarankan menggunakan tidakhook_form_alter
akan berfungsi, meskipun Anda akan berpikir itu akan berhasil. Biasanya Anda akan melakukan ini seperti:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ('comment_form' == $form_id) {
$form['submit']['#value'] = t('Post');
}
}
Meskipun ini tampaknya berfungsi, dan Anda akan melihat tombol dengan teks 'Posting', sebenarnya Anda akan menemukan dua masalah:
Untuk benar-benar membuat pekerjaan ini Anda harus menyembunyikan tombol dan menggunakan handler ajukan formulir kustom Jika saya melakukannya saya akan kembali ke sini dan memposting kode kerja.
Tidak perlu modul khusus atau menggunakan modul string override. Di settings.php Anda, di sekitar baris 416, batalkan komentar dan modifikasi yang berikut dengan menggunakan penggantian Anda:
/**
String overrides:
To override specific strings on your site with or without enabling locale
module, add an entry to this list. This functionality allows you to change
* a small number of your site's default English language interface strings.
*
* Remove the leading hash signs to enable.
*/
# $conf['locale_custom_strings_en'][''] = array(
# 'forum' => 'Discussion board',
# '@count min' => '@count minutes',
# );
Seperti Andy Laken disebutkan di atas
... tombol 'Posting' baru tidak akan benar-benar mengirimkan formulir ...
Bagaimana cara memperbaikinya:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id === 'comment_form') {
// Rename submit button.
$form['submit']['#value'] = t('Post');
// Add new form validator.
array_unshift($form['#validate'], 'MYMODULE_comment_form_validate');
}
}
function MYMODULE_comment_form_validate(&$form, &$form_state) {
// Restore native value.
if ($form_state['values']['op'] === t('Post')) {
$form['submit']['#value'] = t('Save');
$form_state['values']['op'] = t('Save');
}
}
Itu dia! Fungsi validasi Anda berjalan terlebih dahulu dan modul komentar akan memproses formulir dengan nilai pengiriman asli.