web-dev-qa-db-ja.com

page.tplに検索ボックスを挿入するにはどうすればよいですか?

プログラムでテーマに検索ボックス(検索ブロック)を挿入するにはどうすればよいですか?

27
Nick.h

あなたのタグによると、あなたはD7ソリューションを探しています。 Drupal 7 page.tpl.php には$ search_box変数がなくなりました。ただし、template.phpの前処理関数に追加できます。

<?php
/*
 *  Preprocess page.tpl.php to inject the $search_box variable back into D7.
 */
function MYTHEME_preprocess_page(&$variables){
  $search_box = drupal_render(drupal_get_form('search_form'));
  $variables['search_box'] = $search_box;
}

次に、変数をpage.tpl.phpに出力するだけです。

<?php print $search_box; ?>

Module_invokeを使用することもできますが、テンプレートファイルにphpロジックを含めることはできません。

<?php
  $block = module_invoke('search', 'block_view', 'search');
  print render($block); 
?>
39
ipwa

代わりに正しい方法で行い、ブロックを使用してください。
page.tpl内のハードコーディング要素は、「古き良き時代」以来まだ浮かんでいるものの1つです。

代わりにブロックシステムを使用してください。これにより、将来の柔軟性が向上します。 Blockify モジュールをチェックアウトすることもできます。

このモジュールは、いくつかのコアDrupal要素をブロックとして公開します。

7
mortendk

$search_boxpage.tpl.php ファイルで使用可能な変数。

2
Nikola Kotur

ブロックシステムを使用して、検索フォームブロックをページに追加することもできます。

管理>構造>ブロック:検索フォーム

例:ナビゲーションメニューに配置するには、ブロックをリージョンに配置します

"ナビゲーション"

そしてCSSに合わせます。

たとえば、ナビゲーションメニューの右側に配置するには:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}
1
David Thomas