Yanıtlar:
Etikete göre, bir D7 çözümü arıyorsun. Drupal 7 page.tpl.php artık $ search_box değişkeni yoktur. Bununla birlikte, template.php dosyasındaki ön işleme işlevine ekleyebilirsiniz:
<?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;
}
O zaman değişkeni page.tpl.php dosyasında yazdırmanız yeterlidir:
<?php print $search_box; ?>
Module_invoke öğesini de kullanabilirsiniz, ancak şablon dosyalarında php mantığı olmamalıdır:
<?php
$block = module_invoke('search', 'block_view', 'search');
print render($block);
?>
Bunun yerine doğru şekilde yapın ve bloğu kullanın.
Page.tpl içindeki hardcoding unsurları IMHO, "eski güzel günlerden" beri hala yüzen şeylerden biri.
Bunun yerine blok sistemini kullanın; yol boyunca daha fazla esneklik sağlar. Blockify modülünü de kontrol etmek isteyebilirsiniz .
Bu modül bir takım çekirdek Drupal elemanlarını blok olarak ortaya koymaktadır.
Page.tpl.php dosyası $search_box
için mevcut değişkeni kullanabilirsiniz .
Ayrıca blok sistemini kullanabilir ve arama formu bloğunu sayfadaki sayfaya ekleyebilirsiniz.
Yönetici> Yapı> Bloklar: Arama formu
örneğin, navigasyon menüsüne yerleştirmek için bloğu bölgeye yerleştirin.
"Navigasyon"
ve sonra CSS ile hizalayın.
örneğin navigasyon menüsünün sağına koymak için:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}