ฉันจะแทรกช่องค้นหา (บล็อกการค้นหา) ในชุดรูปแบบของฉันโดยทางโปรแกรมได้อย่างไร
ฉันจะแทรกช่องค้นหา (บล็อกการค้นหา) ในชุดรูปแบบของฉันโดยทางโปรแกรมได้อย่างไร
คำตอบ:
ตามแท็กของคุณคุณกำลังมองหาโซลูชัน D7 Drupal 7 page.tpl.phpไม่มีตัวแปร $ search_box อีกต่อไป อย่างไรก็ตามคุณสามารถเพิ่มในฟังก์ชัน preprocess ใน 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);
?>
ทำตามวิธีที่ถูกต้องแทนและใช้บล็อก
องค์ประกอบ Hardcoding ใน page.tpl เป็น IMHO หนึ่งในสิ่งที่ยังคงลอยไปมาตั้งแต่ "วันเก่าดี"
ใช้ระบบบล็อกแทน มันช่วยให้คุณมีความยืดหยุ่นในการเดินทางมากขึ้น คุณอาจต้องการตรวจสอบโมดูลBlockify
โมดูลนี้จะเปิดเผยองค์ประกอบหลักของ Drupal เป็นบล็อก
คุณสามารถใช้$search_box
ตัวแปรที่มีให้สำหรับไฟล์page.tpl.php
คุณยังสามารถใช้ระบบบล็อกและเพิ่มบล็อกแบบฟอร์มการค้นหาไปยังหน้าใน
ผู้ดูแลระบบ> โครงสร้าง> บล็อก: แบบฟอร์มการค้นหา
เช่นเพื่อวางในเมนูนำทางใส่บล็อกในภูมิภาค
"นำร่อง"
แล้วจัดแนวกับ CSS
เช่นวางไว้ทางด้านขวาของเมนูนำทาง:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}