não, eu não tenho. Vou tentar usar o módulo. Obrigado :)
Jasmine Ahmed
11
Este módulo mudará "Salvar" em todos os locais em que é usado, não apenas nos comentários.
kiamlaluno
Respostas:
19
Para o Drupal 7, você precisa criar um módulo personalizado que implementa hook_form_FORM_ID_alter()usando código semelhante ao seguinte (substitua "mymodule" pelo nome abreviado do módulo que você está escrevendo):
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['actions']['submit'])){
$form['actions']['submit']['#value']= t('Post');}}
comment_form () usa o seguinte código para definir os botões do formulário:
// 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 o Drupal 6, o código deve ser o seguinte:
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['submit'])){
$form['submit']['#value']= t('Post');}}
Eu adicionei a if (isset($form['submit'])) {}peça porque no Drupal 6, comment_form()define os botões do formulário usando o código a seguir, e o botão que você está tentando alterar não pode estar presente no formulário.
// 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,);
Só para ter certeza de que minha resposta é clara: você não precisa editar o código usado pelo Drupal; você precisa criar um módulo personalizado que implemente hook_form_FORM_ID_alter().
kiamlaluno
Corrigi o código para funcionar também quando o site do Drupal 6 está forçando a visualização dos comentários enviados e o formulário não está no modo de visualização.
kiamlaluno
2
Para Drupal 6, as respostas acima sugerindo usando hook_form_alterirá não trabalho, embora você pensaria que seria. Normalmente, você faria o seguinte:
function mymodule_form_alter(&$form,&$form_state, $form_id){if('comment_form'== $form_id){
$form['submit']['#value']= t('Post');}}
Enquanto isso parece funcionar, e você verá um botão com o texto 'Postar', na verdade, encontrará dois problemas:
Se o seu site estiver configurado para forçar a visualização dos comentários antes de salvar, você verá que o botão 'Postar' é adicionado ao formulário de comentários inicial, onde deve haver apenas o botão 'Visualizar'. Isso é facilmente corrigido.
Seu novo botão 'Postar' não enviará o formulário - o D6 comment.module procura o valor do botão para fazer sua lógica, e se você o alterar para algo diferente de 'Salvar', isso quebra a lógica de envio.
Para realmente fazer isso funcionar, você precisa ocultar o botão e usar um manipulador de envio de formulário personalizado. Se fizer isso, retornarei aqui e postarei o código de trabalho.
Eu prefiro usar hook_form_altervs substituições de string.
function YOURMODULENAME_form_comment_form_alter(&$form,&$form_state){
$form['buttons']['submit']['#value']='Submit Comment';//Your text for the submit button goes here.};
Não há necessidade de módulo personalizado ou o uso do módulo de substituições de string. Em seu settings.php, na linha 416, remova o comentário e modifique o seguinte usando suas substituições:
/**
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',# );
O mesmo problema do módulo Substituição de String. Sempre que um módulo chama t ("Salvar"), a substituição é usada, como o formulário de edição do nó e vários outros locais no administrador.
Respostas:
Para o Drupal 7, você precisa criar um módulo personalizado que implementa
hook_form_FORM_ID_alter()
usando código semelhante ao seguinte (substitua "mymodule" pelo nome abreviado do módulo que você está escrevendo):comment_form () usa o seguinte código para definir os botões do formulário:
Para o Drupal 6, o código deve ser o seguinte:
Eu adicionei a
if (isset($form['submit'])) {}
peça porque no Drupal 6,comment_form()
define os botões do formulário usando o código a seguir, e o botão que você está tentando alterar não pode estar presente no formulário.fonte
hook_form_FORM_ID_alter()
.Para Drupal 6, as respostas acima sugerindo usando
hook_form_alter
irá não trabalho, embora você pensaria que seria. Normalmente, você faria o seguinte:Enquanto isso parece funcionar, e você verá um botão com o texto 'Postar', na verdade, encontrará dois problemas:
Para realmente fazer isso funcionar, você precisa ocultar o botão e usar um manipulador de envio de formulário personalizado. Se fizer isso, retornarei aqui e postarei o código de trabalho.
fonte
Eu prefiro usar
hook_form_alter
vs substituições de string.fonte
Não há necessidade de módulo personalizado ou o uso do módulo de substituições de string. Em seu settings.php, na linha 416, remova o comentário e modifique o seguinte usando suas substituições:
fonte
Como Andy Laken mencionou acima
Como consertar isto:
É isso aí! Sua função de validação vai primeiro e o módulo de comentários processará o formulário com o valor de envio nativo.
fonte