プログラムでテーマに検索ボックス(検索ブロック)を挿入するにはどうすればよいですか?
あなたのタグによると、あなたは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);
?>
代わりに正しい方法で行い、ブロックを使用してください。
page.tpl内のハードコーディング要素は、「古き良き時代」以来まだ浮かんでいるものの1つです。
代わりにブロックシステムを使用してください。これにより、将来の柔軟性が向上します。 Blockify モジュールをチェックアウトすることもできます。
このモジュールは、いくつかのコアDrupal要素をブロックとして公開します。
$search_box
page.tpl.php ファイルで使用可能な変数。
ブロックシステムを使用して、検索フォームブロックをページに追加することもできます。
管理>構造>ブロック:検索フォーム
例:ナビゲーションメニューに配置するには、ブロックをリージョンに配置します
"ナビゲーション"
そしてCSSに合わせます。
たとえば、ナビゲーションメニューの右側に配置するには:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}