2012-06-16 4 views
1

Я хочу создать модуль, который добавит дополнительное поле на странице конфигурации блока формы поиска, чтобы сохранить текст, который будет отображаться как атрибут заполнителя HTML5. Какие крючки мне нужно использовать, и как мне изменить только блок формы поиска, чтобы иметь дополнительный текстовый файл, который затем печатается на странице?Drupal 7 добавить поле в форму формы блока поиска

ответ

2

Это код, который наконец-то работал, спасибо за вашу помощь:

function yourmodule_form_alter(&$form, &$form_state, $form_id) { 
    if (($form_id == 'block_admin_configure') && ($form['module']['#value'] == 'search')) { 
    $form['settings']['theplaceholder'] = array(
     '#type' => 'textfield', 
     '#title' => t('Add placeholder text'), 
     '#default_value' => variable_get('theplaceholder'), 
     '#maxlength' => 64, 
     '#description' => 'Override the default placeholder', 
     '#weight' => 2, 
     '#access' => TRUE, 
    ); 
    $form['#submit'][] = 'yourmodule_submit_function'; 
    } 

if ($form_id == 'search_block_form') { 
    $form['search_block_form']['#attributes']['placeholder'] = variable_get('theplaceholder'); 
    } 
} 
function yourmodule_submit_function($delta = '', $edit = array()){ 
    variable_set('theplaceholder', $edit['values']['theplaceholder']); 
} 
+0

Я рад, что все получилось. Похоже, вы все-таки использовали крюк form_alter, функцию отправки и variable_get и variable_set ... –

+0

Да, все в порядке, спасибо за вашу помощь! – itsututa

1

Вы можете использовать следующий крюк, чтобы изменить любую форму:

function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) { 

} 

Вставьте собственное имя модуля и формы идентификатор формы, которую вы пытаетесь изменить. В вашем случае это будет форма поиска или блок-форму поиска только для блока. Узнайте идентификатор формы, которую вы пытаетесь изменить, просмотрев источник html страницы и получив идентификатор от элемента.

В любом случае, как только вы выяснили правильный идентификатор для вставки, начать добавление элементов в форму:

function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) { 
    $form['my_new_field'] = array(
    '#type' => 'item', 
    '#markup' => t('Just testing'), 
    '#weight' => 10, 
); 
} 

Загрузите форму до убедиться, что ваш новый ярлык, поле или что-то показывает вверх.

Это работало для вас?

Дополнительная документация по этой функции здесь: http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_form_FORM_ID_alter/7

+0

Спасибо за ответ; этот код добавляет поле на переднем конце, я бы хотел, это текстовое поле в настройках конфигурации для блока поиска, чтобы я мог вводить текст заполнителя, а затем выводить его на передний конец ... – itsututa

+0

О, это тот же главный. Если форма конфигурации окна поиска уже есть, вы можете посмотреть исходный код, чтобы получить идентификатор этой формы и поместить идентификатор ITS в имя функции. Просто найдите элемент

в исходном коде html и возьмите этот идентификатор. Вы попробовали это? Вы можете использовать этот же самый крючок для изменения любой формы. Дайте мне знать, если вам удастся найти правильный идентификатор формы ... –

+0

Хорошо, я попробовал это и не выдал текстовое поле в форме блока администратора: – itsututa

Смежные вопросы