Est-ce que quelqu'un sait comment renommer le bouton de commentaire "enregistrer"? J'essaye de le changer en "Post". J'utilise Drupal 7 et le sous-thème Zen.
Est-ce que quelqu'un sait comment renommer le bouton de commentaire "enregistrer"? J'essaye de le changer en "Post". J'utilise Drupal 7 et le sous-thème Zen.
Réponses:
Pour Drupal 7, vous devez créer un module personnalisé qui implémente en hook_form_FORM_ID_alter()
utilisant un code similaire au suivant (remplacez "mymodule" par le nom court du module que vous écrivez):
function mymodule_form_comment_form_alter(&$form, &$form_state) {
if (isset($form['actions']['submit'])) {
$form['actions']['submit']['#value'] = t('Post');
}
}
comment_form () utilise le code suivant pour définir les boutons du formulaire:
// 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'),
Pour Drupal 6, le code doit être le suivant:
function mymodule_form_comment_form_alter(&$form, &$form_state) {
if (isset($form['submit'])) {
$form['submit']['#value'] = t('Post');
}
}
J'ai ajouté la if (isset($form['submit'])) {}
partie car dans Drupal 6, comment_form()
définit les boutons du formulaire à l'aide du code suivant, et le bouton que vous essayez de modifier ne pouvait pas être présent dans le formulaire.
// 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()
.
Pour Drupal 6, les réponses ci - dessus suggère l' utilisation hook_form_alter
va pas travailler, même si on pourrait penser qu'il le ferait. En général, vous feriez cela comme:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ('comment_form' == $form_id) {
$form['submit']['#value'] = t('Post');
}
}
Bien que cela semble fonctionner et que vous verrez un bouton avec le texte «Publier», vous trouverez en fait deux problèmes:
Pour que cela fonctionne, vous devez masquer le bouton et utiliser un gestionnaire d'envoi de formulaire personnalisé. Si je le fais, je reviendrai ici et publierai le code de travail.
Pas besoin de module personnalisé ou d'utiliser le module de remplacement de chaîne. Dans votre settings.php, autour de la ligne 416, décommentez et modifiez les éléments suivants à l'aide de vos remplacements:
/**
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',
# );
Comme Andy Laken l'a mentionné ci - dessus
... le nouveau bouton "Publier" ne soumettra pas réellement le formulaire ...
Comment régler ceci:
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');
}
}
C'est ça! Votre fonction de validation passe en premier et le module de commentaires traite le formulaire avec une valeur de soumission native.