Переопределение формы поиска на друпал 7

Главные вкладки

Аватар пользователя dias711 dias711 5 июня 2018 в 11:23

Приветствую. Решил переопределить форму поиска. Вот исходный код формы поиска:

<div class="left search-block-header">
           <div id="block-search-api-page-search" class="block block-search-api-page contextual-links-region first odd">

      <div class="contextual-links-wrapper"><ul class="contextual-links"><li class="search-api-page-edit first"><a href="/admin/config/search/search_api/page/search/edit?destination=taxonomy/term/7">Edit search page</a></li>
<li class="block-configure last"><a href="/admin/structure/block/manage/search_api_page/search/configure?destination=taxonomy/term/7">Настроить блок</a></li>
</ul></div>
  <form action="/%D0%B6%D0%B5%D0%BD%D1%81%D0%BA%D0%B8%D0%B5-%D0%BA%D0%BE%D1%88%D0%B5%D0%BB%D1%8C%D0%BA%D0%B8-%D0%BE%D0%BF%D1%82%D0%BE%D0%BC" method="post" id="search-api-page-search-form-search" accept-charset="UTF-8"><div><input placeholder="Введите ключевые слова для поиска" type="text" id="edit-keys-1" name="keys_1" value="" size="15" maxlength="128" class="form-text form-autocomplete live-results-search-textfield" /><input type="hidden" id="edit-keys-1-autocomplete" value="http://test17/search_api_live_results/search_api_page_1" disabled="disabled" class="live-result-autocomplete" /><input type="hidden" name="id" value="1" />
<input type="submit" id="edit-submit-1" name="op" value="Поиск" class="form-submit" /><input type="hidden" name="form_build_id" value="form--cOUwE91kq4sesvPpNeW39z5eCfQ21fipu80HNZ8V0Y" />
<input type="hidden" name="form_id" value="search_api_page_search_form_search" />
</div></form>
</div>
        </div>

В template.php темы (подтема zen, имя темы new_theme) вставил функцию:

<?php
function new_theme_form_alter(&$form, &$form_state$form_id) {

  if (

$form_id == 'search-api-page-search-form-search') {

    

$deftext t(' ');
    
$form['keys_1']['#title'] = t(' '); 
    
$form['keys_1']['#title_display'] = 'invisible'
    
$form['keys_1']['#size'] = 24;  
    
$form['keys_1']['#default_value'] = $deftext
    
//$form['actions']['submit']['#value'] = t('Найти'); 

    

$form['actions']['submit'] = array('#type' => 'image_button''#src' => base_path() . path_to_theme() . '/search.png'); 
    
$form['keys_1']['#attributes']['onblur'] = "if (this.value == '') {this.value = '".$deftext."';}";
    
$form['keys_1']['#attributes']['onfocus'] = "if (this.value == '".$deftext."') {this.value = '';}";
  }
}
?>

Но переопределения формы не происходит. Помогите пожалуйста разобраться знающие люди, что я делаю не так.

Комментарии

Аватар пользователя bumble bumble 5 июня 2018 в 12:03
  1. Измените ID'шник формы на "search_api_page_search_form_search"
  2. Сбросьте кеш
  3. Удостоверьтесь что проверяете на странице, с темой, в которой вносили правки (если нужно повсеместное реагирование - вызывайте хук из модуля)
  4. Используйте лучше hook_form_FORM_ID_alter
Аватар пользователя bumble bumble 5 июня 2018 в 12:47

Вам нужен не ID html-селектора, а ID формы, что есть ее имя.
Вы можете чекнуть правильный ID'шник выполнив:

<?php
var_dump
($form_id);
// Или Devel'ом
// dpm($form_id);
?>

в альтере формы (!смотрите со 2го раза).

Аватар пользователя dias711 dias711 5 июня 2018 в 15:09

devel показывает айдишник формы "search_api_page_search_form_search". К тому же в коде страницы есть скрытый input name='form_id value='search_api_page_search_form_search' (<input type="hidden" name="form_id" value="search_api_page_search_form_search" />). Как я понял айдишник формы все же "search_api_page_search_form_search". Или я опять что то не так понял. Может форму не получается переопределить так как поиск я реализовывал с помощью модулей Search API, Search API Database Search, Search API pages, Search API live results, а модуль search отключил?

Аватар пользователя bumble bumble 5 июня 2018 в 15:18

Так... Я, видимо, не очень понятно написал, my bad!
Когда я писал:

bumble wrote:

Измените ID'шник формы на "search_api_page_search_form_search"

Я имел ввиду вот в этом куске:

<?php
if ($form_id == 'search-api-page-search-form-search') { // заменить на "search_api_page_search_form_search"
  // Alteration staff
}
?>
Аватар пользователя dias711 dias711 5 июня 2018 в 12:44

кусок кода:

<form action="/%D0%B6%D0%B5%D0%BD%D1%81%D0%BA%D0%B8%D0%B5-%D0%BA%D0%BE%D1%88%D0%B5%D0%BB%D1%8C%D0%BA%D0%B8-%D0%BE%D0%BF%D1%82%D0%BE%D0%BC" method="post" id="search-api-page-search-form-search"