¿Cómo se cambia el nombre del botón de comentario "guardar"?
8
¿Alguien sabe cómo cambiar el nombre del botón de comentario "guardar"? Estoy tratando de cambiarlo a "Publicar". Estoy usando Drupal 7 y el subtema Zen.
No, no lo he hecho. Intentaré usar el módulo. gracias :)
Jasmine Ahmed
1
Este módulo cambiará "Guardar" en todos los lugares donde se usa, no solo en los comentarios.
kiamlaluno
Respuestas:
19
Para Drupal 7, debe crear un módulo personalizado que implemente hook_form_FORM_ID_alter()usando un código similar al siguiente (reemplace "mymodule" con el nombre corto del módulo que está escribiendo):
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['actions']['submit'])){
$form['actions']['submit']['#value']= t('Post');}}
comment_form () usa el siguiente código para definir los botones del formulario:
// 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'),
Para Drupal 6, el código debe ser el siguiente:
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['submit'])){
$form['submit']['#value']= t('Post');}}
Agregué la if (isset($form['submit'])) {}parte porque en Drupal 6, comment_form()define los botones del formulario con el siguiente código, y el botón que está intentando cambiar no puede estar presente en el formulario.
// 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,);
Solo para asegurarme de que mi respuesta es clara: no tiene que editar el código utilizado por Drupal; necesita crear un módulo personalizado que implemente hook_form_FORM_ID_alter().
kiamlaluno
Corregí el código para que funcione también cuando el sitio de Drupal 6 está forzando la vista previa de los comentarios enviados, y el formulario no está en modo de vista previa.
kiamlaluno
2
Para Drupal 6, las respuestas anteriores sugiere el uso hook_form_alterserá no trabajar, aunque se podría pensar que lo haría. Por lo general, haría esto como:
function mymodule_form_alter(&$form,&$form_state, $form_id){if('comment_form'== $form_id){
$form['submit']['#value']= t('Post');}}
Si bien esto parece funcionar, y verá un botón con el texto 'Publicar', de hecho encontrará dos problemas:
Si su sitio está configurado para forzar la vista previa de los comentarios antes de guardar, encontrará que el botón 'Publicar' se agrega al formulario de comentarios inicial, donde solo debería haber el botón 'Vista previa'. Sin embargo, esto se soluciona fácilmente.
Su nuevo botón 'Publicar' en realidad no enviará el formulario: D6 comment.module busca el valor del botón para hacer su lógica, y si lo cambia a algo diferente a 'Guardar', esto rompe la lógica de envío.
Para que esto funcione realmente, necesitará ocultar el botón y usar un controlador de envío de formulario personalizado. Si hago eso, volveré aquí y publicaré el código de trabajo.
function YOURMODULENAME_form_comment_form_alter(&$form,&$form_state){
$form['buttons']['submit']['#value']='Submit Comment';//Your text for the submit button goes here.};
No es necesario un módulo personalizado o usar el módulo de anulación de cadena. En su settings.php, alrededor de la línea 416, descomente y modifique lo siguiente usando sus anulaciones:
/**
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',# );
Mismo problema que con el módulo de anulación de cadena. Cada vez que un módulo llama a t ("Guardar"), se usa la anulación, como el formulario de edición de nodo y un montón de otros lugares en el administrador.
Respuestas:
Para Drupal 7, debe crear un módulo personalizado que implemente
hook_form_FORM_ID_alter()
usando un código similar al siguiente (reemplace "mymodule" con el nombre corto del módulo que está escribiendo):comment_form () usa el siguiente código para definir los botones del formulario:
Para Drupal 6, el código debe ser el siguiente:
Agregué la
if (isset($form['submit'])) {}
parte porque en Drupal 6,comment_form()
define los botones del formulario con el siguiente código, y el botón que está intentando cambiar no puede estar presente en el formulario.fuente
hook_form_FORM_ID_alter()
.Para Drupal 6, las respuestas anteriores sugiere el uso
hook_form_alter
será no trabajar, aunque se podría pensar que lo haría. Por lo general, haría esto como:Si bien esto parece funcionar, y verá un botón con el texto 'Publicar', de hecho encontrará dos problemas:
Para que esto funcione realmente, necesitará ocultar el botón y usar un controlador de envío de formulario personalizado. Si hago eso, volveré aquí y publicaré el código de trabajo.
fuente
Prefiero usar
hook_form_alter
vs String Overrides.fuente
No es necesario un módulo personalizado o usar el módulo de anulación de cadena. En su settings.php, alrededor de la línea 416, descomente y modifique lo siguiente usando sus anulaciones:
fuente
Como Andy Laken mencionó anteriormente
Cómo arreglar esto:
¡Eso es! Su función de validación va primero y el módulo de comentarios procesará el formulario con el valor de envío nativo.
fuente