D7のインストールで、ページの特別な部分に検索フィールドを追加したいのですが、デフォルトの検索ブロックを使用したくありません(テーマを設定するのは難しいため、このボックスは既に作業しています)。
当然、私がタイプするだけなら:
<form><input type="text" placeholder="Search"></form>
動作しません。
これは、検索ブロックのデフォルトの検索フォームのように実際に機能するために他に何が必要ですか?私はこれがあることを知っています カスタム検索 モジュールですが、この単純な機能のために別のモジュールをインストールするべきではないと思います。
ありがとう!!
Search form_idでdrupal_get_form()を呼び出すだけです。これは、search_block_formまたはsearch_formのどちらかです。
そして、返された配列でdrupal_render()を使用します。
print drupal_render(drupal_get_form('search_block_form'));
Drupal_render()の部分は間違っているかもしれませんが、drupal_get_form()が配列を返すので、drupal_renderを使用する必要があるので、それは私には思えます。
このページも参考になるかもしれません- http://data.agaric.com/print-form-such-search-form-anywhere-drupal
お役に立てば幸いです。
デフォルトの検索ボックスをテーマにするのが難しいと言った理由がわかりません。 Drupalは、テーマのオーバーライドまたはフォームのオーバーライドを好きなように実行できます。 google の場合、この目的のための多くのソリューションが表示されます。
このQ/Aを確認してください: 検索ボックスを上書きする方法? そして search-block-form.tpl.php を上書きすることもできます。次に、ブロック構成ページに表示する検索ブロックのページを定義できますadmin/structure/block/manage/search/form/configure
または、任意の領域から検索ブロックを削除して、プログラムで必要な場所にブロックを印刷できます。 ブロックのコンテンツを任意の場所に配置する を参照してください。
<?php
$block = module_invoke('search', 'block_view', 'form');
print render($block['content']);
?>
/*
* create search block
*/
function mymodule_block_info() {
$blocks['my_search'] = array(
'info' => t('My Search Block'),
'cache' => DRUPAL_NO_CACHE,
);
return $blocks;
}
function mymodule_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'my_search':
$block['title'] = 'MyCustom Search';
$srchblk = drupal_get_form('mymodule_search_block_form');
$block['content'] = drupal_render($srchblk);
break;
}
return $block;
}
/* create search form */
function mymodule_search_block_form($form, &$form_state) {
$form['keys'] = array(
'#type' => 'textfield',
'#size' => 15,
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Search',
);
return $form;
}
/*
* create search result menu callback
*/
function mymodule_menu() {
$items['custom/node/search/%'] = array(
'page callback' => 'mymodule_do_search',
'page arguments' => array(3),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
/*
* create form handler
*/
function mymodule_search_block_form_submit($form, &$form_state) {
drupal_goto('custom/node/search/' . $form_state['values']['keys']);
}
/*
* create search result callback function
*/
function mymodule_do_search($keys) {
// set the page title
drupal_set_title('MY search results');
// get the search results
$results = module_invoke('node', 'search_execute', $keys );
return theme('search_results', array('results' => $results));
}
これは私が必要としたものです:
$block = module_invoke('search', 'block_view', 'form');
print render($block['content']);