нет у меня нет Я постараюсь использовать модуль. спасибо :)
Жасмин Ахмед
1
Этот модуль будет менять «Сохранить» во всех местах, где он используется, а не только в комментариях.
kiamlaluno
Ответы:
19
Для Drupal 7 вам нужно создать пользовательский модуль, который реализует hook_form_FORM_ID_alter()с использованием кода, подобного следующему (замените «mymodule» на короткое имя написанного вами модуля):
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['actions']['submit'])){
$form['actions']['submit']['#value']= t('Post');}}
comment_form () использует следующий код, чтобы определить кнопки формы:
// 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'),
Для Drupal 6 код должен быть следующим:
function mymodule_form_comment_form_alter(&$form,&$form_state){if(isset($form['submit'])){
$form['submit']['#value']= t('Post');}}
Я добавил эту if (isset($form['submit'])) {}часть, потому что в Drupal 6 comment_form()определяются кнопки формы с помощью следующего кода, и кнопка, которую вы пытаетесь изменить, не может присутствовать в форме.
// 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,);
Просто чтобы убедиться, что мой ответ ясен: вам не нужно редактировать код, используемый Drupal; вам нужно создать собственный модуль, который реализует hook_form_FORM_ID_alter().
kiamlaluno
Я исправил код, чтобы он работал также, когда сайт Drupal 6 принудительно просматривает отправленные комментарии, а форма не находится в режиме предварительного просмотра.
kiamlaluno
2
Для Drupal 6 приведенные выше ответы с предложением использовать неhook_form_alter будут работать, хотя вы думаете, что так и будет. Обычно вы делаете это так:
function mymodule_form_alter(&$form,&$form_state, $form_id){if('comment_form'== $form_id){
$form['submit']['#value']= t('Post');}}
Пока это работает, и вы увидите кнопку с текстом «Post», на самом деле вы обнаружите две проблемы:
Если ваш сайт настроен на принудительный предварительный просмотр комментариев перед сохранением, вы обнаружите, что кнопка «Опубликовать» добавлена в исходную форму комментария, где должна быть только кнопка «Предварительный просмотр». Это легко исправить, хотя.
Ваша новая кнопка «Отправить» фактически не будет отправлять форму - D6 comment.module ищет значение кнопки, чтобы выполнить ее логику, и если вы измените ее на что-то отличное от «Сохранить», это нарушит логику отправки.
Чтобы на самом деле это сделать, вам нужно спрятать кнопку и использовать собственный обработчик отправки формы. Если я сделаю это, я вернусь сюда и выложу рабочий код.
Я предпочитаю использовать hook_form_alterпереопределения строк.
function YOURMODULENAME_form_comment_form_alter(&$form,&$form_state){
$form['buttons']['submit']['#value']='Submit Comment';//Your text for the submit button goes here.};
Нет необходимости в пользовательском модуле или использовании модуля переопределения строк. В файле settings.php, в строке 416, раскомментируйте и измените следующее с помощью переопределений:
/**
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',# );
Та же проблема, что и с модулем переопределения строк. Каждый раз, когда модуль вызывает t («Сохранить»), используется переопределение, такое как форма редактирования узла и множество других мест в админке.
Ответы:
Для Drupal 7 вам нужно создать пользовательский модуль, который реализует
hook_form_FORM_ID_alter()
с использованием кода, подобного следующему (замените «mymodule» на короткое имя написанного вами модуля):comment_form () использует следующий код, чтобы определить кнопки формы:
Для Drupal 6 код должен быть следующим:
Я добавил эту
if (isset($form['submit'])) {}
часть, потому что в Drupal 6comment_form()
определяются кнопки формы с помощью следующего кода, и кнопка, которую вы пытаетесь изменить, не может присутствовать в форме.источник
hook_form_FORM_ID_alter()
.Для Drupal 6 приведенные выше ответы с предложением использовать не
hook_form_alter
будут работать, хотя вы думаете, что так и будет. Обычно вы делаете это так:Пока это работает, и вы увидите кнопку с текстом «Post», на самом деле вы обнаружите две проблемы:
Чтобы на самом деле это сделать, вам нужно спрятать кнопку и использовать собственный обработчик отправки формы. Если я сделаю это, я вернусь сюда и выложу рабочий код.
источник
Я предпочитаю использовать
hook_form_alter
переопределения строк.источник
Нет необходимости в пользовательском модуле или использовании модуля переопределения строк. В файле settings.php, в строке 416, раскомментируйте и измените следующее с помощью переопределений:
источник
Как упоминал Энди Лэйкен выше
Как это исправить:
Это оно! Ваша функция validate идет первой, а модуль комментариев обработает форму с собственным значением submit.
источник